Tomcat服务器上安装SSL证书?

Tomcat支持PFX格式和JKS两种格式的证书,您可根据您Tomcat的版本择其中一种格式的证书安装到Tomcat上。

一、 安装PFX格式证书

1、 根据《证书文件介绍及安装前准备》文档转换证书格式,准备好PFX格式的证书;

2、 在Tomcat安装目录下新建cert目录,将证书文件拷贝到cert目录下。

3、 打开Tomcat > conf > server.xml文件,在server.xml文件中添加以下属性(其中port属性请根据您的实际情况修改,其中protocol建议为:

protocol="org.apache.coyote.http11.Http11Protocol”):


<Connector port="443"
    protocol="HTTP/1.1"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    keystoreFile="domain name.pfx"   #此处keystoreFile代表证书文件的路径请用您证书的文件名替换domain name
    keystoreType="PKCS12"
    keystorePass="证书密码"   #请用您证书密码替换文件中的内容
    clientAuth="false"
    SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
    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"
/>

4、 保存server.xml文件配置。

5、 (可选步骤)配置web.xml文件开启HTTP强制跳转HTTPS。

#在后添加以下内容:


<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>

6、 重启Tomcat。

二、 安装JKS格式证书

1、 转换证书格式为JKS:

  1.  输入以下java JDK命令将PFX格式的证书转换成JKS格式:
    

keytool -importkeystore -srckeystore domain name.pfx -destkeystore domain name.jks -srcstoretype PKCS12 -deststoretype JKS

说明: Windows系统中,需在 %JAVA_HOME%/jdk/bin目录下执行该命令。

2、 回车后输入PFX证书密码和JKS证书密码。

说明: JKS证书密码等同于PFX证书密码。两个密码不同的时候会导致Tomcat重启失败。

3、 在Tomcat安装目录下新建cert目录,将证书和密码文件拷贝到cert目录下。

4、 打开Tomcat安装目录 > conf文件夹 > server.xml文件,在server.xml文件中找到 <Connector port=”443”标签并添加以下参数:

keystoreFile="cert/domain name.jks” #此处keystoreFile代表证书文件的路径,请用您证书的文件名替换cert/后面的内容。

keystoreType="PKCS12”

keystorePass="证书密码” #请输入您的证书密码。

参考以下完整配置(其中port属性请根据您的实际情况修改):


<Connector port="443"
    protocol="HTTP/1.1"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    keystoreFile="cert/domain name.jks"
    keystoreType="PKCS12"
    keystorePass="证书密码"
    clientAuth="false"
    SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
    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"
/>

5、 保存server.xml文件配置。

6、 重启Tomcat。

三、 安装JKS格式证书(Windows)

1.请在登录后控制中心中选择您需要安装的证书并单击下载, 可参考帮助文档证书下载。

2.证书文件下载后解压缩。

  • 解压后文件夹内容: | 文件名称路径 | 作用 | 使用类型 | | ———— | ———— | ———— | | ubn_cn.key | 证书私钥 | iis/apache/nginx通用私钥 | | Apache/ubn_cn.crt | 证书文件 | apache使用 | | IIS/ubn_cn.pfx | 证书文件 | iis使用 | | Nginx/ubn_cn.crt | 证书文件 | nginx、防火墙、cdn、负载均衡、对象存储等通用 |

解压后文件示例:

3.转换证书格式,手动转换格式的方式生成jks证书密钥库。

  • 操作方法如下: 访问 转换工具。超链接https://myssl.com/cert_convert.html 将 Nginx 文件夹中的证书文件和私钥文件上传至转换工具中(右键分别编辑ubn_cn.key以及nginx目录下的ubn_cn.crt文件,将内容粘贴到工证书文件及私钥文件中),并填写密钥库密码,单击提交,转换为 jks 格式证书。

4.将已获取到的ubn_cn.jks 密钥库文件拷贝至 Tomcat 安装目录 conf 目录下。如下图所示:

5.编辑在 conf 目录下的 server.xml 文件。添加如下内容:

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
  maxThreads="150" scheme="https" secure="true"
	#证书保存的路径
  keystoreFile="Tomcat 安装目录/conf/ubn_cn.jks" 
	#密钥库密码
  keystorePass="******"
  clientAuth="false"/>

详细 server.xml 文件请参考如下内容:

  • 注意 不建议您直接复制 server.xml 文件内容,避免格式有误。
<?xml version="1.0" encoding="UTF-8"?>
  <Server port="8005" shutdown="SHUTDOWN">
 <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
 <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
 <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
 <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 <GlobalNamingResources>
 <Resource name="UserDatabase" auth="Container"
           type="org.apache.catalina.UserDatabase"
           description="User database that can be updated and saved"
           factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
           pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
     <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"  redirectPort="8443" />
     <Connector port="443" protocol="HTTP/1.1"
            maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
            clientAuth="false"
             keystoreFile="Tomcat 安装目录/conf/ubn_cn.jks"
             keystorePass="******" />
 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="test.ubn.cn ">
   <Realm className="org.apache.catalina.realm.LockOutRealm">
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase"/>
   </Realm>
 <Host name="cloud.tencent.com"  appBase="webapps" 
     unpackWARs="true" autoDeploy="true" >
     <Context path="" docBase ="Knews" />
 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="localhost_access_log" suffix=".txt"  
        pattern="%h %l %u %t &quot;%r&quot; %s %b" />
   </Host>
 </Engine>
  </Service>
</Server>
  • 配置文件的主要参数说明如下:
  • keystoreFile:密钥库文件的存放位置,可以指定绝对路径,也可以指定相对于 <CATALINA_HOME> (Tomcat 安装目录)环境变量的相对路径。如果此项没有设定,默认情况下,Tomcat 将从当前操作系统用户的用户目录下读取名为 “.keystore” 的文件。
  • keystorePass:密钥库密码,指定 keystore 的密码。证书转换时设置的私钥密码,
  • clientAuth:如果设为 true,表示 Tomcat 要求所有的 SSL 客户出示安全证书,对 SSL 客户进行身份验证。

6.确认 Tomcat 服务器是否启动 若已启动,您需要在 Tomcat 安装目录 bin 目录下依次执行以下 bat 脚本,关闭和重启 Tomcat 服务。

shutdown.bat  (关闭 Tomcat 服务器)
startup.bat  (启动 Tomcat 服务器)

若未启动,您需要在 Tomcat 安装目录 bin 目录下执行以下 bat 脚本,启动 Tomcat 服务。

startup.bat

7.若启动成功,即可使用 https://test.ubn.cn 进行访问。 如果浏览器地址栏显示安全锁标识,则说明证书安装成功。如下图所示

HTTP 自动跳转 HTTPS 的安全配置(可选)
  • 如果您需要将 HTTP 请求自动重定向到 HTTPS。您可以通过以下操作设置

1.编辑 Tomcat 安装目录 conf 目录下的 web.xml 文件,并找到 标签。如下图所示:

2.请在结束标签 后面换行,并添加以下内容

 <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>

3.编辑 Tomcat 安装目录下的 server.xml 文件,将 redirectPort 参数修改为 SSL 的 connector 的端口,即443端口。如下所示:

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

4.在 Tomcat 安装目录 /bin 目录下执行执行以下 bat 脚本,关闭 Tomcat 服务器。

shutdown.bat

5.执行以下命令,确认配置是否存在问题。

configtest.bat
  • 若存在,请您重新配置或者根据提示修改存在问题。
  • 若不存在,请执行下一步。

6. 执行以下 bat 脚本,启动 Tomcat 服务器,即可使用 http://test.ubn.cn 进行访问。

startup.bat