Tomcat 支持三种不同的证书格式来实现 SSL证书配置,包括 jks、pfx、crt(pem),我们介绍如何在Tomcat 8 安装这三种格式的SSL证书
1. 安装PEM编码的SSL证书
PEM编码的SSL证书通常后缀是 crt 或 pem 的证书文件,一般收到CA签发的证书也是这个格式的,使用文件编辑器打开 server.xml ,这个文件在tomcat 目录下面的 conf 目录下 ,例如你的tomcat 目录是在 c:\tomcat8 ,那么server.xml 文件就是在
C:\tomcat8\conf
最好先备份文件,然后打开文件后,在 <Service name=”Catalina”> 下面添加
<Connector
protocol=”HTTP/1.1″
port=”443″ maxThreads=”200″
scheme=”https” secure=”true” SSLEnabled=”true”
SSLCertificateFile=”C:\tomcat7\conf\ssl\server.crt”
SSLCertificateKeyFile=”C:\tomcat7\conf\ssl\server.key”
SSLCertificateChainFile =”C:\tomcat7\conf\ssl\ca.crt”
SSLVerifyClient=”optional” SSLProtocol=”TLSv1+TLSv1.1+TLSv1.2″/>
将上面的证书文件,私钥文件,以及中级证书文件,改成你自己的文件路径
- SSLCertificateFile=”域名证书路径”
- SSLCertificateKeyFile=”私钥路径”
- SSLCertificateChainFile =”中级证书路径”
然后保存文件,证书安装完毕,重启 tomcat ,让证书生效
2. 安装PFX格式证书文件
同样也是打开server.xml文件,在 <Service name=”Catalina”> 下面添加
<Connector port=”443″ protocol=”HTTP/1.1″
maxThreads=”150″
SSLEnabled=”true”
scheme=”https”
secure=”true”
keystoreFile=”PFX证书文件路径”
keystoreType=”PKCS12″
keystorePass=”PFX证书密码”
clientAuth=”false”
SSLProtocol=”TLSv1+TLSv1.1+TLSv1.2″ />
然后保存文件,重启 tomcat ,让SSL证书配置生效
3. 安装JKS格式证书文件
同样也是打开server.xml文件,在 <Service name=”Catalina”> 下面添加
<Connector port=”443″ protocol=”HTTP/1.1″
maxThreads=”150″ SSLEnabled=”true” scheme=”https” secure=”true”
keystoreFile=”jks证书文件路径”
keystoreType=”JKS”
keystorePass=”jks证书密码”
clientAuth=”false”
SSLProtocol=”TLSv1+TLSv1.1+TLSv1.2″ />
然后保存文件,证书安装完毕,重启 tomcat ,让SSL证书配置生效
TOMCAT 安装PFX格式的SSL证书
这里我们介绍在TOMCAT 安装PFX格式的SSL证书 到服务器上,这种安装方式相对简单一些,适合各种版本的 Tomcat,如果你的证书格式是PEM格式的,要先转换为PFX格式的后才能安装
或者 使用如下OPENSSL命令
openssl pkcs12 -export -out certificate.pfx -inkey server.key -in server.crt -certfile ca.crt
其中 server.crt 是CA颁发的服务器证书,server.key 是私钥(Key),ca.crt是中级证书 , certificate.pfx 是转换后得到的证书,
有了certificate.pfx 这个证书后,下面就可以开始安装了,找到安装 Tomcat 目录下该文件server.xml , 默认是在Tomcat安装目录下的 conf 文件夹中。找到 <Connector port=”8443″ 标签,增加如下属性
keystoreFile=”certificate.pfx”
keystoreType=”PKCS12″
keystorePass=”certificate.pfx证书的密码”
其中/path/cert.pfx替换成你的证书所在位置,keystorePass是pfx格式证书的密码。
修改后:
<Connector port=”8443″ protocol=”HTTP/1.1″
maxThreads=”150″ SSLEnabled=”true” scheme=”https” secure=”true”
keystoreFile=”/path/certificate.pfx”
keystoreType=”PKCS12″
keystorePass=”certificate.pfx证书的密码”
clientAuth=”false”
sslProtocol=”TLS”
ciphers=”TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
TLS_RSA_WITH_AES_128_GCM_SHA256,
TLS_RSA_WITH_AES_256_GCM_SHA384,
TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_RSA_WITH_AES_256_CBC_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_256_CBC_SHA,
SSL_RSA_WITH_3DES_EDE_CBC_SHA” />
修改完成,重启tomcat 就可以了。
Pem证书换成tomcat使用的keystore和安装
1. 把密钥和证书转换为PKCS12格式的证书
首先我们要把pem格式的密钥和证书文件转换成Java keystore 能够处理的格式,在这里我们转换为PKCS12格式 ,请运行以下命令
openssl pkcs12 -export -in yourcert.crt -inkey yourkey.key -out newcert.p12 -name tomcat -chain -CAfile ca.crt
运行命令后,请按照提示输入一个你可以记得住的密码。
关于这行命令的说明:
a. yourcert.crt CA颁发的SSL证书,yourkey.key是pem格式的密钥,newcert.p12是转换后的PKCS12格式证书。
b. tomcat tomcat通过这个别名在keystore搜索对应的证书应用到网站上。
c. ca.crt 是中级证书和根证书的合并文件,这样才能保证完整的证书链。
2. 导入PKCS12格式的证书和密钥 得到Java keystore
keytool -importkeystore -deststorepass <a_password_for_your_java_keystore> -destkeypass <a_password_for_the_key_in_the_keystore> -destkeystore tomcat.keystore -srckeystore <exported_private_key_and_cert.p12> -srcstoretype PKCS12 -srcstorepass <the_password_I_told_you_to_remember> -alias tomcat
说明:
运行命令的时候请不要包含任何括号<>;
<a_password_for_your_java_keystore> 这里替换成你自己的密码;
<a_password_for_the_key_in_the_keystore> 这里替换成你自己的密码 如果担心混淆, 可以都设置成相同的密码;
<exported_private_key_and_cert.p12> 刚才在第一步生成的PKCS12格式文件;
<the_password_I_told_you_to_remember> 刚才在第一步设置的密码;
通过这一步我们会生成keystore文件: tomcat.keystore
3. 导入中级证书 根证书
keytool -import -alias intermediate1 -keystore tomcat.keystore -trustcacerts -file intermediate1.crt
如果有多个中级证书 请导入其他的中级证书,
keytool -import -alias intermediate2 -keystore tomcat.keystore -trustcacerts -file intermediate2.crt
4. 把在第二步生成的tomcat.keystore 移动到适合保存该文件的目录,
我们将在下一步的配置文件中要引用这个文件。比如 /usr/local/keystore/tomcat.keystore
5. 配置tomcat让他能够使用我们新生成的keystore
在tomcat安装目录下的conf文件夹内找到server.xml ,编辑该文件,找到 SSL connector 标签,参考下面的设置做相应的修改。比如要使用的端口 、keystore存放的目录 ,keystore的密码 ,(其他参数的如果请参考相关文档做修改,其他参数如果不明白,请保留默认的数值就可以了)
<Connector port=”8443″
maxThreads=”200″
scheme=”https”
secure=”true”
SSLEnabled=”true”
keystoreFile=”/usr/local/keystore/tomcat.keystore”
keystorePass=”123456789″
clientAuth=”false”
sslProtocol=”TLS”/>
重启tomcat 使SSL证书生效
tomcat http跳转到https
首先确认网站已经可以http 和https方式访问,然后找到
tomcat/conf/web.xml
这个文件,在这个文件里面的
</welcome-file-list>
后面加上如下代码
<login-config>
<!– Authorization setting for SSL –>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-onlyArea</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>
然后重启tomcat

QQ咨询
阿里旺旺
#skype#