免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
概述
本文主要介绍如何将下载的证书安装到Tomcat服务器上。
详细信息
阿里云SSL证书服务支持下载证书安装到Tomcat服务器,从而使Tomcat服务器支持HTTPS安全访问。本文介绍了证书安装的具体操作。
注意:
- 确认您的Tomcat服务器上已经开启了8443端口,即HTTPS服务的默认端口。
- 如果一个域名有多个服务器,则每一个服务器上都要去部署。
下载证书
在Tomcat服务器中安装SSL证书
安装证书前,需要获取证书文件和密码文件,请根据申请证书时的生成方式来选择操作步骤:
系统自动创建CSR
- 在本地解压已下载的证书文件。确认有Tomcat文件夹。
- 从Tomcat文件夹内获得包含PFX证书文件和pfx_password.txt密码文件。
说明:每次下载都会产生新密码,该密码仅匹配本次下载的证书。如果需要更新证书文件,同时也要更新密码。申请证书时如果没有选择系统自动创建CSR,则没有该文件,请选择其它服务器下载CRT文件,利用openssl命令自己生成PFX证书,具体请参见自己创建CSR。
自己创建CSR
- 解压已下载的证书压缩包,获得server.pem文件。
说明:server.pem文件包括两段-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----证书代码,分别为服务器证书和中级CA证书。
- 使用OpenSSL工具,将pem格式证书转换为PFX格式证书,得到server.pfx文件:
- pem文件和生成CSR时的私钥server.key文件放在OpenSSL工具安装目录的
bin
目录下。 - 在OpenSSL工具安装目录的bin目录下,执行以下命令,将pem格式证书转换为PFX格式证书。
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.pem
- 此时系统需要您输入PFX证书密码,该密码为用户自定义密码,请根据您的需要对密码进行设置,然后按Enter键。
注意:
- 请谨慎保管您的PFX证书密码。后续设置JKS密码需要与此处设置的PFX密码保持一致,否则可能会导致Tomcat启动失败。
- 为提高用户密码安全性,建议参考以下复杂度要求设置密码:
- 密码长度为8~32个字符。
- 至少需要包含大写字母、小写字母、数字、空格、特殊字符中的3种类型字符。
- 根据系统提示,再次输入PFX证书密码,然后按Enter键。
说明:若系统没有回显任何错误信息,表示已在OpenSSL工具安装目录下成功生成“server.pfx”文件。
- pem文件和生成CSR时的私钥server.key文件放在OpenSSL工具安装目录的
- 使用Keytool工具,将PFX格式证书文件转换成JKS格式,得到server.jks文件,具体参考以下步骤:
- 将本节第2步中生成的server.pfx文件拷贝到
%JAVA_HOME%/jdk/bin
目录下。 - 在
%JAVA_HOME%/jdk/bin
目录下,执行以下命令,然后按Enter键。keytool -importkeystore -srckeystore server.pfx -destkeystore server.jks -srcstoretype PKCS12 -deststoretype JKS
- 根据系统提示,输入JKS证书密码,然后按Enter键。
注意:请将JKS密码设置为与PFX证书密码相同的密码,否则可能会导致Tomcat启动失败。
- 根据系统提示,再次输入JKS证书密码,然后按Enter键。
- 根据系统提示,输入本节步骤2中设置的PFX证书密码,然后按Enter键。若系统返回类似以下信息,则说明转换成功,已在OpenSSL工具安装目录下成功生成server.jks文件。
已成功导入别名1的条目。
已完成导入命令:1个条目成功导入,0个条目失败或取消 - 在
%JAVA_HOME%/jdk/bin
目录下新建一个keystorePass.txt文件,将JKS的密码保存在该文件中。
- 将本节第2步中生成的server.pfx文件拷贝到
- 在Tomcat的安装目录下创建
cert
目录,并且将server.jks证书文件和keystorePass.txt密码文件拷贝到cert
目录中。
修改配置文件
关于如何修改配置文件,本节会对Tomcat 7和Tomcat 8.5/9两个环境进行介绍,请根据您的实际情况进行选择:
Tomcat 7
- 在Tomcat安装目录的server.xml文件中定位到以下部分内容。
<!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> -->
- 删除
<!- -
和- ->
注释符后,增加以下2个变量参数,请参考更多信息的参数说明一,修改keystoreFile和keystorePass参数的值。 - 在Tomcat安装目录的server.xml文件中定位到以下部分内容。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"> - 将Host Name变量设置为证书绑定的域名,下面以www.domain.com为例。
<Host name="www.domain.com" appBase="webapps"
unpackWARs="true" autoDeploy="true"> - 保存server.xml配置文件。
Tomcat 8.5/9
- 在Tomcat安装目录的server.xml文件中定位到以下部分内容。
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
--> - 删除
<!- -
和- ->
注释符后,参考更多信息的参数说明二,修改certificateKeystoreFile参数值。然后新增certificateKeystorePassword参数值,最终配置内容类似如下。<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="xxxx"
certificateKeystorePassword="xxxx"
type="RSA" />
</SSLHostConfig>
</Connector> - 在Tomcat安装目录的server.xml文件中定位到以下部分内容。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"> - 将Host Name变量设置为证书绑定的域名,下面以www.domain.com为例。
<Host name="www.domain.com" appBase="webapps"
unpackWARs="true" autoDeploy="true"> - 保存server.xml配置文件。
重启Tomcat服务
- 进入Tomcat的
bin
目录。 - 执行以下命令,停止Tomcat服务。
./shutdown.sh
- 等待大约10秒后,执行以下命令,启动Tomcat服务。
./startup.sh
说明:若进程被守护进程自动拉起,则无需手动启动。
结果验证
进入浏览器,访问您的站点网址,确认浏览器地址栏左侧显示锁标识,如下图所示,说明您的证书已经安装成功。
说明:如果在安装证书过程中遇到问题,可参见证书安装配置出错或网站无法访问。
更多信息
参数说明一
参数 | 参数说明 |
port |
指定服务器要使用的端口号,建议配置为“443”。 |
protocol |
设置HTTP协议,保持缺省值即可。 |
keystoreFile |
server.jks文件存放路径,绝对路径和相对路径均可。示例:cert/server.jks |
keystorePass |
server.jks的密码。填写keystorePass.txt文件内的密码。 |
clientAuth |
是否要求所有的SSL客户出示安全证书,对SSL客户进行身份验证,保持缺省值即可。 |
参数说明二
参数 | 参数说明 |
port |
指定服务器要使用的端口号,建议配置为“443”。 |
protocol |
设置HTTP协议,保持缺省值即可。 |
certificateKeystoreFile |
server.jks文件存放路径,绝对路径和相对路径均可。示例:cert/server.jks |
certificateKeystorePassword |
server.jks的密码。填写keystorePass.txt文件内的密码。 |
适用于
- SSL证书