Tomcat 8.5 配置 SSL 证书

原文链接:https://segmentfault.com/a/1190000009780545

Tomcat 8.5 配置 SSL 证书

 

申请的是阿里云的免费证书,下载tomcat版的证书文件 里面有4个文件分别是: xxxx.key、xxxx.pem、xxxx.pfx、password.txt

 

1. 根具阿里云上提供的配置说明如下:

Tomcat支持JKS格式证书,从Tomcat7开始也支持PFX格式证书,两种证书格式任选其一。
文件说明:

  1. 证书文件xxxx.pem,包含两段内容,请不要删除任何一段内容。

  2. 如果是证书系统创建的CSR,还包含:证书私钥文件xxxx.key、PFX格式证书文件xxxx.pfx、PFX格式证书密码文件pfx-password.txt。
    1、证书格式转换

在Tomcat的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,附件中只包含xxxx.pem文件,还需要将私钥文件拷贝到cert目录,命名为xxxx.key;如果是系统创建的CSR,请直接到第2步。
到cert目录下执行如下命令完成PFX格式转换命令,此处要设置PFX证书密码,请牢记:
openssl pkcs12 -export -out xxxx.pfx -inkey xxx.key -in xxxx.pem

 

2. PFX证书安装

找到安装Tomcat目录下该文件server.xml,一般默认路径都是在 conf 文件夹中。找到 <Connection port="8443" 标签,增加如下属性:
keystoreFile="cert/xxxx.pfx"
keystoreType="PKCS12"

此处的证书密码,请参考附件中的密码文件或在第1步中设置的密码

keystorePass="证书密码"

完整的配置如下,其中port属性根据实际情况修改:
<Connector port="8443"

protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="cert/xxxx.pfx"
keystoreType="PKCS12"
keystorePass="证书密码"
clientAuth="false"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4"/>

 

3. JKS证书安装(帮助)

( 1 ) 使用java jdk将PFX格式证书转换为JKS格式证书(windows环境注意在%JAVA_HOME%/jdk/bin目录下执行)
keytool -importkeystore -srckeystore xxxx.pfx -destkeystore your-name.jks -srcstoretype PKCS12 -deststoretype JKS
回车后输入JKS证书密码和PFX证书密码,强烈推荐将JKS密码与PFX证书密码相同,否则可能会导致Tomcat启动失败。
( 2 ) 找到安装 Tomcat 目录下该文件Server.xml,一般默认路径都是在 conf 文件夹中。找到 <Connection port="8443" 标签,增加如下属性:
keystoreFile="cert/your-name.jks"
keystorePass="证书密码"
完整的配置如下,其中port属性根据实际情况修改:
<Connector port="8443"

protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="cert/your-name.jks"
keystorePass="证书密码"
clientAuth="false"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4"/>

( 注意:不要直接拷贝所有配置,只需添加 keystoreFile,keystorePass等参数即可,其它参数请根据自己的实际情况修改 )

 

4. 重启 Tomcat


5. 通过 https 访问

通过Https方式访问您的站点,测试站点证书的安装配置,如遇到证书不信任问题,请查看相关文档。

 

以上是阿里云上提供的文档。 我安装的是Tomcat8,和说明上的出入较大,费了一些功夫,因为我下载的是系统签名的证书,也就是只关注第1、2步就可以了。下面说一下我走过的坑

(1)在Server.xml中可以找到有两个Connector 端口为8843的注释, 一种是使用Http11NioProtocol 另一种是Http11AprProtocol , 根据注释可我们使用第一种。

(2)keystoreFile文件路径的配置,如果按照说明里面的配置,会提示找不到文件。因此我配置了绝对地址:D:/apache-tomcat-8.5.15/cert/xxxx.pfx . 可以把证书放到config目录下,配置成conf/xxxx.pfx就行了。

(3)tomcat8 配置ssl的方式是有所改变的,多了SSLHostConfig、Certificate标签,因此百度上的配置大部分都是不适用的,tomcat启动是会报错。https://tomcat.apache.org/tom... 这个链接里面有配置ssl的一些属性。基本配置如下:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="D:/apache-tomcat-8.5.15/cert/xxx.pfx"
                         certificateKeystoreType="PKCS12" certificateKeystorePassword="xxx" />
        </SSLHostConfig>
    </Connector>

tomcat配置java自签名证书:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="D:/apache-tomcat-8.5.15/cert/httpsTest.keystore"
                         certificateKeystoreType="JKS" certificateKeystorePassword="123456" />
        </SSLHostConfig>
    </Connector>

其中keystore的密码和证书的密码要一样

上一篇:spring boot配置ssl


下一篇:JKS转PFX