Thank you Konstantin and Chris Schultz.  Been trying all you suggested 
Konstantin, and a heck of a lot more without much success.  But I finally did 
get /something/ in a log that might be helpful if anyone can interpret it.

Chris, on your observation:

        I'm not sure how Apache Felix fits into this (I don't know a thing 
about Felix), but:

        > <Connector port="443" 
protocol="org.apache.coyote.http11.Http11NioProtocol"
        >                maxThreads="150" SSLEnabled="true" scheme="https" 
secure="true"
        >                clientAuth="false" sslProtocol="TLS" />

        This connector has no reference to any keystore configuration. Unless 
Felix is somehow wiring that all up, then you haven't configured a viable TLS 
connector.

I also don't know what role Felix plays.  Apparently you spotted something 
missing in the snippet above that tells you there's no connector configured.  
The above is right out of the server.xml.  I simply un-remmed it. 

Now, my java app's configuration file DOES have an entry that references a 
keystore: 

        ##############################
        # Inbound SSL Settings
        ##############################

        org.apache.felix.https.enable=true
        org.osgi.service.http.port.secure=443
        org.apache.felix.https.keystore=E:\\Program Files\\Connector\\.keystore
        org.apache.felix.https.keystore.password=REDACTED
        org.apache.felix.https.keystore.key.password= REDACTED
        org.apache.felix.https.truststore=C:\\Program 
Files\\Java\\jre1.8.0_60\\lib\\security\\cacerts
        org.apache.felix.https.truststore.password= REDACTED

Question  -- Does anyone think " Program Files"  (space) above is contributing 
to the problem?

BTW the \\Connector\\ in the paths above is the install directory of my java 
app, which is, I think, a different connector than that in the server.xml.

So here is the snippet from my log:

<snip>

2015-10-23 09:34:10 [o.e.j.u.c.AbstractLifeCycle] WARN   - FAILED 
SslContextFactory@2cc0a31e(E:\Program Files\Connector\.keystore,C:\Program 
Files\Java\jre1.8.0_60\lib\security\cacerts): 
java.security.UnrecoverableKeyException: Cannot recover key
java.security.UnrecoverableKeyException: Cannot recover key
        at sun.security.provider.KeyProtector.recover(Unknown Source) 
~[na:1.8.0_60]
        at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source) 
~[na:1.8.0_60]
        at sun.security.provider.JavaKeyStore$JKS.engineGetKey(Unknown Source) 
~[na:1.8.0_60]
        at sun.security.provider.KeyStoreDelegator.engineGetKey(Unknown Source) 
~[na:1.8.0_60]
        at 
sun.security.provider.JavaKeyStore$DualFormatJKS.engineGetKey(Unknown Source) 
~[na:1.8.0_60]
        at java.security.KeyStore.getKey(Unknown Source) ~[na:1.8.0_60]
        at sun.security.ssl.SunX509KeyManagerImpl.<init>(Unknown Source) 
~[na:1.8.0_60]
        at sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(Unknown 
Source) ~[na:1.8.0_60]
        at javax.net.ssl.KeyManagerFactory.init(Unknown Source) ~[na:1.8.0_60]
        at 
org.eclipse.jetty.util.ssl.SslContextFactory.getKeyManagers(SslContextFactory.java:1080)
 ~[na:na]
        at 
org.eclipse.jetty.util.ssl.SslContextFactory.doStart(SslContextFactory.java:291)
 ~[na:na]
        at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
 ~[na:na]
        at 
org.eclipse.jetty.server.ssl.SslSelectChannelConnector.doStart(SslSelectChannelConnector.java:612)
 ~[na:na]
        at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
 ~[na:na]
        at 
org.apache.felix.http.jetty.internal.JettyService.startConnector(JettyService.java:421)
 ~[na:na]
        at 
org.apache.felix.http.jetty.internal.JettyService.initializeHttps(JettyService.java:327)
 ~[na:na]
        at 
org.apache.felix.http.jetty.internal.JettyService.initializeJetty(JettyService.java:273)
 ~[na:na]
        at 
org.apache.felix.http.jetty.internal.JettyService.startJetty(JettyService.java:197)
 ~[na:na]
        at 
org.apache.felix.http.jetty.internal.JettyService.start(JettyService.java:130) 
~[na:na]
        at 
org.apache.felix.http.jetty.internal.JettyActivator.doStart(JettyActivator.java:29)
 ~[na:na]
        at 
org.apache.felix.http.base.internal.AbstractActivator.start(AbstractActivator.java:41)
 ~[na:na]
        at 
org.apache.felix.http.bundle.internal.CombinedActivator.start(CombinedActivator.java:56)
 ~[na:na]
        at 
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645)
 ~[org.apache.felix.main-4.2.1.jar:na]
        at org.apache.felix.framework.Felix.activateBundle(Felix.java:2146) 
~[org.apache.felix.main-4.2.1.jar:na]
        at org.apache.felix.framework.Felix.startBundle(Felix.java:2064) 
~[org.apache.felix.main-4.2.1.jar:na]
        at 
org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1291) 
~[org.apache.felix.main-4.2.1.jar:na]
        at 
org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
 ~[org.apache.felix.main-4.2.1.jar:na]
        at java.lang.Thread.run(Unknown Source) ~[na:1.8.0_60]
2015-10-23 09:34:11 [o.e.j.u.c.AbstractLifeCycle] WARN   - FAILED 
SslSelectChannelConnector@0.0.0.0:443: java.security.UnrecoverableKeyException: 
Cannot recover key
java.security.UnrecoverableKeyException: Cannot recover key
        at sun.security.provider.KeyProtector.recover(Unknown Source) 
~[na:1.8.0_60]
        at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source) 
~[na:1.8.0_60]

<snip>

Second Question - am I supposed to import the .keystore into my cacerts file?  
When I open the cacerts file that came with the java install,  it contains  
30-40 certifs (key-pairs?)   that I didn't create.

Thanks all for any leads or answers to my SSL noob questions you can provide.

__________________________________________
Gregory Beyer
gbey...@gatech.edu

-----Original Message-----
From: Konstantin Kolinko [mailto:knst.koli...@gmail.com] 
Sent: Friday, October 16, 2015 10:54 PM
To: Tomcat Users List <users@tomcat.apache.org>
Subject: Re: Tomcat answers on port 80, not on 443

2015-10-15 20:48 GMT+03:00 Beyer, Gregory L <gregory.be...@business.gatech.edu>:
>
> Hello,
>
> I'm trying to get my web app, which is otherwise running fine on port 80 to 
> respond on SSL.   Sorry if this is a resend.  I only just started getting 
> list messages so my first may not have gone.  Don't intend to bump.
>
> Scenario:
>
> The server in question is a Windows12 web application host running Tomcat 
> 8.0.26.   Running on Tomcat is a java application which accepts port 80  
> connections from another host across the 'net.  I have firewall rules 
> configured to allow port 80 and 443 traffic between the servers.   80 This is 
> working fine.   I'm not running IIS - only Tomcat.
>
> However, we don't want to have our data stream exposed clear text over the 
> internet - we need to use SSL.
>
> I have used %JAVA_HOME%\bin\keytool to generate a keystore and then have 
> configured the InBound SSL Settings in my apps config.properties file with 
> the path to the keystore and the password.  The # lines are variations on the 
> path to the truststore that I have attempted unsuccessfully.  I'm using the 
> default certificate, below.  Webclients will not be connecting so we don't 
> need a commercial certificate.  This is a server to server web call.
>
> ##############################
> # Inbound SSL Settings
> ##############################
>
> org.apache.felix.https.enable=true
> org.osgi.service.http.port.secure=443
> org.apache.felix.https.keystore=E:\keystore\scilexcon
> #org.apache.felix.https.keystore=./keystore/scilexcon
> org.apache.felix.https.keystore.password=redacted
> org.apache.felix.https.keystore.key.password= redacted 
> org.apache.felix.https.truststore=E:\keystore\scilexcon
> #org.apache.felix.https.truststore=C:\Program 
> Files\Java\jre1.8.0_60\lib\security\cacerts
> #org.apache.felix.https.truststore=./keystore/scilexcon
> org.apache.felix.https.truststore.password= redacted
>

1)
Is above a *.properties file?  If so then '\' works as an escape symbol and 
must be doubled (\\). Usually people just use '/' instead, it usually works 
with Java.

> ./keystore/scilexcon

2)
"." is the current directory when you start a program. It may be different 
depending on you you start it. (E.g. for Tomcat started explicitly via 
startup.bat vs started as a service  it may be different).

> I've also configured the java runtime of my application with the trustore 
> path:
>
> -Djavax.net.ssl.trustStore=E:\keystore\scilexcon
>
>
>
> An http connect to my connect runtime is successful.  http://<hostname>    
> https://<hostname>     times out
>
> Netstat -a reveals that port 443 is listening on <hostname>
>
>
> Documents I have used so far is one documenting the Inbound SSL 
> connections of my apps config file, and the SLL documentation of 
> Apache Tomcat  http://<hostname>8080/docs/ssl-howto.html
>
> In my server.xml, I've unremmed the connector section and changed the 
> connector port to 443:
>
>
> <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
>                maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
>                clientAuth="false" sslProtocol="TLS" />
>
>
>          Define an AJP 1.3 Connector on port 8009 -->
>     <Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
>
> I've looked through my logs, but don't find anything to indicate why it just 
> clocks until timing out.  Maybe I'm missing something?
>
> Having read the SSL howto, I don't think I've missed anything.

3)
https://wiki.apache.org/tomcat/FAQ/Troubleshooting_and_Diagnostics#Common_Troubleshooting_Scenario

Try connecting with a web browser or a standard tool (like wget, openssl 
client) to check that HTTPS works.

Look into an access log.

Take a series of thread dumps (for your client as well).

4) Is Java trusing your self-signed server certificate (so that it is able to 
connect to it)?

Old versions of Java (Java 6) use SSLv2Hello when initialing a HTTPS 
connection. That protocol is disabled by default in current versions of Tomcat.
https://wiki.apache.org/tomcat/Security/POODLE

Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to