跳转至

Tomcat安装配置SSL/HTTPS证书说明

Tomcat配置SSL证书,根据版本不同分为两种情况。

配置说明

  1. 将jks证书文件上传至conf/ssl/目录,配置conf/server.xml文件中的SSL连接器;
  2. 一般原配置文件有8443端口的默认SSL连接器,将原8443端口连接器删掉使用本页面提供的参考配置文件内容,或在原连接器上修改;
  3. 参考配置文件里的省略号代表原server.xml配置文件内容,根据实际情况替换参考配置文件中的域名、证书文件路径、jks证书密码(高亮标示行);
  4. 确认服务器443端口已开放,对部分云服务器商(如阿里云/腾讯云),还需要在产品控制台的安全组开放443端口,具体请参考云服务商文档;
  5. 重启Tomcat,使配置生效;
  6. 如果使用了CDN/负载均衡,若CDN支持http协议回源则只在CDN上配置证书即可。如果CDN产品不支持http协议回源,则需要同时在服务器和CDN上配置证书,详情可以咨询相应CDN产品技术支持。

8.5+(8.5及更高)版本

Tomcat模式参考配置文件

  • 将默认的80端口连接器redirectPort端口从8443改为443
  • 注意修改高亮行jks文件路径和证书密码。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8"?>
...
<Server port="8005" shutdown="SHUTDOWN">
    ...

    <Service name="Catalina">

        <Connector port="80" protocol="HTTP/1.1"
            connectionTimeout="20000"
            redirectPort="443" />

        <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
            maxThreads="150" SSLEnabled="true">
            <SSLHostConfig hostName="yourdomain.com">
            <Certificate certificateKeystoreFile="conf/ssl/yourdomain_com.jks"
            certificateKeystorePassword="123456"
            certificateKeystoreType="JKS"
            certificateKeyAlias="tomcat"
            type="RSA" />
            </SSLHostConfig>
        </Connector>

    </Service>
</Server>

Apache模式参考配置文件

注意修改高亮行的私钥、证书、中级证书文件路径。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
    maxThreads="150" SSLEnabled="true" scheme="https" secure="true" >
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
    <SSLHostConfig>
        <Certificate certificateKeyFile="conf/ssl/yourdomain_com.key"
        certificateFile="conf/ssl/yourdomain_com.crt"
        SSLCertificateChainFile="conf/ssl/ca.crt"
        type="RSA" />
    </SSLHostConfig>
</Connector>

8.4-(8.4及更低)版本

Tomcat模式参考配置文件

注意修改高亮行jks文件路径和证书密码。

1
2
3
4
5
6
7
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
    SSLEnabled="true" maxThreads="150" scheme="https" secure="true"
    keystoreFile="conf/yourdomain_com.jks"
    keystorePass="123456"
    clientAuth="false"
    sslProtocol="TLS"
    ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256" />

强制HTTPS

conf/web.xml文件中,找到</welcome-file-list>标签,在下方加入以下代码后重启Tomcat。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<login-config>
    <!-- Authorization setting for SSL -->
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
    <!-- Authorization setting for SSL -->
    <web-resource-collection>
    <web-resource-name>SSL</web-resource-name>
    <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>