Hello Mark,

It's an honour!

I reply to this in a non standard way because a few things have happened
while it was night over here.
Long story short: it works now.

1) The first thing was that the server got upgraded to v9.0.35

Next I've began to work with your suggestions.

><Connector
>        protocol="org.apache.coyote.http11.Http11NioProtocol"
>        port="443"
>        maxThreads="150"
>        minSpareThreads="25"
>        scheme="https"
>        secure="true"
>        SSLEnabled="true"
>    <SSLHostConfig>
>        <Certificate
>                certificateKeyAlias="rabbit.nl"
>                certificateKeystoreFile="/etc/ssl/crt/rabbit.nl.jks"
>                certificateKeystorePassword="password2"
>        />
>    </SSLHostConfig>
></Connector>
>

2) Because v35 changed the connector requirements a bit the closing ">"
after SSLEnabled="true" is mandatory.
This immediately made the above config work.

>Notes:
> - The protocol attribute is missing so I have added that
> - I'd expect address to be an IP address so I have omitted that
>   attribute
> - maxHttpHeaderSize="8192" is the default so I have omitted that
>   attribute
> - maxSpareThreads="75" is not a recognised attribute so I have removed
>   it
> - acceptCount="100" is the default so I have omitted that attribute
> - disableUploadTimeout="true" is the default so I have omitted that
>   attribute
> - enableLookups="false" is the default so I have omitted that attribute
> - clientAuth="false" is the default so I have omitted that attribute
> - sslProtocol="TLS" is the default so I have omitted that attribute
>
>I'd then add the hostName attribute to the SSLHostConfig element and,
>once that is working, combine the two.

3) After after adding the hostName attribute I did get the error that you
expected below
so i added it in the connector.


>
>I don't see a defaultSSLHostConfigName configured for the Connector.
>That might trigger the error you are seeing (because the _default_ host
>name won't have an associated certificate.
>
>If that is the issue, we can look at trying to improve that error message.
>

4) after adding this I've got the working config:

<Connector
        protocol="org.apache.coyote.http11.Http11NioProtocol"
        port="443"
        maxThreads="150"
        minSpareThreads="25"
        scheme="https"
        secure="true"
        SSLEnabled="true"
        defaultSSLHostConfigName="www.rabbit.nl">
    <SSLHostConfig hostName="www.rabbit.nl">
            <Certificate
                certificateKeyAlias="rabbit.nl"
                certificateKeystoreFile="/etc/ssl/crt/rabbit.nl.jks"
                certificateKeystorePassword="xxxx1"
                />
    </SSLHostConfig>
    <SSLHostConfig hostName="www.appel.nl">
        <Certificate
                certificateKeyAlias="appel.nl"
                certificateKeystoreFile="/etc/ssl/crt/appel.nl.jks"
                certificateKeystorePassword="xxxx2"
        />
    </SSLHostConfig>
</Connector>

<Host name="www.rabbit.nl"  appBase="/var/www/www.rabbit.nl"
       unpackWARs="false" autoDeploy="true">
   <Alias>rabbit.nl</Alias>
   <Context path="/planner" docBase="/var/www/
www.rabbit.nl/webapp/planner.war"  privileged="true"
               reloadable="true" crossContext="true">
               <Resource name="bean/ConfigBeanFactory" auth="Container"
     type="nl.bowtie.reservation.util.ConfigBean"
     factory="org.apache.naming.factory.BeanFactory"
     configFilename="/var/www/www.rabbit.nl/config/reservation.properties"/>
   </Context>
   <Context path="/" docBase="/var/www/www.rabbit.nl/html"
 privileged="true"
       reloadable="true" crossContext="true"/>
 </Host>
 <Host name="www.appel.nl"  appBase="/var/www/www.appel.nl"
     unpackWARs="false" autoDeploy="true">
     <Alias>appel.nl</Alias>
     <Context path="/" docBase="/var/www/www.appel.nl/html"
 privileged="true"
         reloadable="true" crossContext="true"/>
 </Host>

Thank you Chris, Mark and Ian.

Maurice Poos


On Wed, May 27, 2020 at 10:38 AM Mark Thomas <ma...@apache.org> wrote:

> On 26/05/2020 14:19, Maurice Poos wrote:
> > Hello and thank you in advance for looking into this.
> >
> > I'm a Dutch native so bare with me...
> >
> > Problem:
> > Trying to configure TOMCAT9 to handle 2 domains on the same server with
> > https and 2 different keystore files.
> > There is no APACHE webserver or other webserver available.
> >
> > Single connector configuration works perfectly for that single domain
> e.g.
> >
> >      <Connector
> >         port="443"
> >         address="rabbit.nl"
> >         maxHttpHeaderSize="8192"
> >         maxThreads="150"
> >         minSpareThreads="25"
> >         maxSpareThreads="75"
> >         enableLookups="false"
> >         disableUploadTimeout="true"
> >         acceptCount="100"
> >         scheme="https"
> >         secure="true"
> >         SSLEnabled="true"
> >         clientAuth="false"
> >         sslProtocol="TLS"
> >         keyAlias="rabbit.nl"
> >         keystoreFile="/etc/ssl/crt/rabbit.nl.jks"
> >         keystorePass="password2" />
>
> I suggest, as a first step, you covnvert the above working configuration
> to the new <SSLHostConfig ... /> style and get that working for each
> cert one at a time. When you have the individual configurations working,
> then you can combine them.
>
> The configuration above should convert to:
>
> <Connector
>         protocol="org.apache.coyote.http11.Http11NioProtocol"
>         port="443"
>         maxThreads="150"
>         minSpareThreads="25"
>         scheme="https"
>         secure="true"
>         SSLEnabled="true"
>     <SSLHostConfig>
>         <Certificate
>                 certificateKeyAlias="rabbit.nl"
>                 certificateKeystoreFile="/etc/ssl/crt/rabbit.nl.jks"
>                 certificateKeystorePassword="password2"
>         />
>     </SSLHostConfig>
> </Connector>
>
> Notes:
>  - The protocol attribute is missing so I have added that
>  - I'd expect address to be an IP address so I have omitted that
>    attribute
>  - maxHttpHeaderSize="8192" is the default so I have omitted that
>    attribute
>  - maxSpareThreads="75" is not a recognised attribute so I have removed
>    it
>  - acceptCount="100" is the default so I have omitted that attribute
>  - disableUploadTimeout="true" is the default so I have omitted that
>    attribute
>  - enableLookups="false" is the default so I have omitted that attribute
>  - clientAuth="false" is the default so I have omitted that attribute
>  - sslProtocol="TLS" is the default so I have omitted that attribute
>
> I'd then add the hostName attribute to the SSLHostConfig element and,
> once that is working, combine the two.
>
> > But the multi-domain connector is flawed somewhere and due to the limited
> > feedback from TOMCAT it's a real struggle to figure out what is wrong
>
> I don't see a defaultSSLHostConfigName configured for the Connector.
> That might trigger the error you are seeing (because the _default_ host
> name won't have an associated certificate.
>
> If that is the issue, we can look at trying to improve that error message.
>
> > SERVER.XML CONFIG file exert:
> >
> > <Connector
> >     port="443"
> >     protocol="org.apache.coyote.http11.Http11NioProtocol"
> >     maxHttpHeaderSize="8192"
> >     maxThreads="150"
> >     SSLEnabled="true"
> >     acceptCount="100"
> >     scheme="https"
> >     minSpareThreads="25"
> >     maxSpareThreads="75"
> >     enableLookups="false"
> >     secure="true"
> >     clientAuth="false"
> >     <SSLHostConfig hostName="appel.nl" sslProtocol="TLS">
> >             <Certificate
> > certificateKeystoreFile="/etc/ssl/crt/appel.nl.jks"
> > certificateKeystorePassword="password1" certificateKeyAlias="appel.nl"
> > certificateKeyPassword="password1" />
> >             </SSLHostConfig>
> >     <SSLHostConfig hostName="rabbit.nl" sslProtocol="TLS">
> >             <Certificate
> > certificateKeystoreFile="/etc/ssl/crt/rabbit.nl.jks"
> > certificateKeystorePassword="password2" certificateKeyAlias="rabbit.nl"
> > certificateKeyPassword="password2" />
> >             </SSLHostConfig>
> > </Connector>
> >
> >
> > Can somebody help me?
> >
> >
> > Thank you,
> >
> > Maurice Poos
> >
> > _____________________________________________________________________
> > TOMCAT VERSION
> > Server version: Apache Tomcat/9.0.31
> > Server built:   Feb 5 2020 19:32:12 UTC
> > Server number:  9.0.31.0
> >
> > LINUX
> > "Ubuntu 18.04.4 LTS"
> >
> > Architecture:
> > amd64
> >
> > JVM Version:    14.0.1+7
> > JVM Vendor:     Oracle Corporation
> >
> __________________________________________________________________________
> > KEY CSR creation
> >
> > KEY
> > /usr/bin/keytool -genkey -keysize 2048 -alias rabbit.nl -keyalg RSA
> > -keystore rabbit.nl.jks
> >
> > CSR
> > /usr/bin/keytool -certreq -keyalg RSA -alias rabbit.nl -file
> rabbit.nl.csr
> > -keystore rabbit.nl.jks
> >
> ___________________________________________________________________________
> >
> > ERROR LOG CATALINA.OUT
> >
> > 26-May-2020 11:22:34.602 SEVERE [main]
> > org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to
> > initialize component [Connector[HTTP/1.1-443]]
> >     org.apache.catalina.LifecycleException: Protocol handler
> initialization
> > failed
> >         at
> > org.apache.catalina.connector.Connector.initInternal(Connector.java:1013)
> >         at
> > org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
> >         at
> >
> org.apache.catalina.core.StandardService.initInternal(StandardService.java:533)
> >         at
> > org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
> >         at
> >
> org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1057)
> >         at
> > org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
> >         at org.apache.catalina.startup.Catalina.load(Catalina.java:584)
> >         at org.apache.catalina.startup.Catalina.load(Catalina.java:607)
> >         at
> > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> >         at
> >
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >         at
> >
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >         at java.base/java.lang.reflect.Method.invoke(Method.java:564)
> >         at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:303)
> >         at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
> >     Caused by: java.lang.IllegalArgumentException
> >         at
> > org.apache.tomcat.util.net
> .AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99)
> >         at
> > org.apache.tomcat.util.net
> .AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71)
> >         at org.apache.tomcat.util.net
> .NioEndpoint.bind(NioEndpoint.java:217)
> >         at
> > org.apache.tomcat.util.net
> .AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1141)
> >         at
> > org.apache.tomcat.util.net
> .AbstractEndpoint.init(AbstractEndpoint.java:1154)
> >         at
> > org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:581)
> >         at
> >
> org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74)
> >         at
> > org.apache.catalina.connector.Connector.initInternal(Connector.java:1010)
> >         ... 13 more
> >     Caused by: java.io.IOException
> >         at
> > org.apache.tomcat.util.net
> .SSLUtilBase.getKeyManagers(SSLUtilBase.java:302)
> >         at
> > org.apache.tomcat.util.net
> .SSLUtilBase.createSSLContext(SSLUtilBase.java:247)
> >         at
> > org.apache.tomcat.util.net
> .AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97)
> >         ... 20 more
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

Reply via email to