Using multiple SSL certificates in Tomcat 7

后端 未结 5 1391
被撕碎了的回忆
被撕碎了的回忆 2020-12-08 05:59

I\'ve been using a wildcard SSL certificate in Apache Tomcat 7. But now that I have to renew, I see there are these EV (extended verification) SSL certificates where browse

相关标签:
5条回答
  • 2020-12-08 06:24

    I am using tomcat 8.5 and now it is possible to configure tomcat with multiple SSL/ multi domain. Here is my config.

        <Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true" 
               defaultSSLHostConfigName="localhost" >
    
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig hostName="localhost">
            <Certificate certificateKeyFile="/$path/privkey.pem"
                         certificateFile="/$path/certificate.pem"
                         certificateChainFile="/$path/chain.pem"
                         type="RSA" />
        </SSLHostConfig>
           <SSLHostConfig hostName="domainname.com">
            <Certificate certificateKeyFile="/$path/privkey.pem"
                         certificateFile="/$path/certificate.pem"
                         certificateChainFile="/$path/chain.pem"
                         type="RSA" />
        </SSLHostConfig>
    
    </Connector>
    
    0 讨论(0)
  • 2020-12-08 06:32

    I am not sure, here if "SNI" is really relevant.

    But in your case, the typical solution would be so called ssloffloading or ssl Termination: i.e. put your tomcat behinde an apache, which configured to use multiple vhosts / domain names on the same ip. You could configure for each vhost in apache to use its own SSL certificate.

    There is a step by step guide for this topic here:

    http://milestonenext.blogspot.de/2012/09/ssl-offloading-with-modjk-part-1.html

    0 讨论(0)
  • 2020-12-08 06:33

    Without Server Name Indication (SNI), which is not supported in Java (6), you need one certificate per IP address.

    You can configure Tomcat to use multiple connectors, with different IP addresses and certificates, using the address attribute.

    For example:

    <Connector 
           port="8443" maxThreads="200" address="10.0.0.1"
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="keystore1.jks" keystorePass="..."
           clientAuth="false" sslProtocol="TLS"/>
    <Connector 
           port="8443" maxThreads="200" address="10.0.0.2"
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="keystore2.jks" keystorePass="..."
           clientAuth="false" sslProtocol="TLS"/>
    

    You may also be able to use the same keystore, if you need, and use the keyAlias attribute (in Connector) to tell the connector which key/certificate to use (based on the alias name in the keystore).

    0 讨论(0)
  • 2020-12-08 06:38

    I have just got this to work on a server with multiple SSL's and IP's.

    Added IP's this way:
    http://www.loadtestingtool.com/help/how-setup-ip.shtml

    Added code to make the server use maximum possible security with the "ciphers" (when having a 2048bit key).

    Tested first that this will work with self-signed keys this way:
    http://community.jboss.org/wiki/GeneratingSelfSignedCertificateWithKeytool
    Note that the test in this page has erroneous characters in the beginning of the "-keystore" text (on multiple places).

    Here is the code:

    <Connector protocol="org.apache.coyote.http11.Http11Protocol" address="###.###.###.##1" port="443" minSpareThreads="5"
        enableLookups="true" acceptCount="100" maxThreads="200"
        scheme="https" secure="true" SSLEnabled="true" keystoreFile="key1.key"
        keystorePass="password1" clientAuth="false" sslProtocol="TLS"
        ciphers="SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"/>
    
    <Connector protocol="org.apache.coyote.http11.Http11Protocol" address="###.###.###.##2" port="443" minSpareThreads="5"
        enableLookups="true" acceptCount="100" maxThreads="200"
        scheme="https" secure="true" SSLEnabled="true" keystoreFile="key2.key"
        keystorePass="password2" clientAuth="false" sslProtocol="TLS"
        ciphers="SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"/>
    
    0 讨论(0)
  • 2020-12-08 06:41

    You could just make life easier and get an EV SAN (also know as UCC) and add each domain as an entry in the subject alternative name field. And if want to use several ip addresses, just export the certificate and reimport it onto each ip address (http://www.ssltools.com/manager is great for that if you are running windows). A good example of an EV SAN certificate is the certificate found at https://www.ssl.com, just examine it.

    0 讨论(0)
提交回复
热议问题