Tomcat SSL证书安装指南:在申请数字证书之前,您必须先生成证书私钥和证书请求文件 (CSR, Certificate Signing Request), CSR是您的公钥证书原始文件,包含了您的服务器信息和您的单位信息,需要提交给CA认证中心。
请妥善保管和备份您的私钥。
以上是申请证书流程图。完成整个流程最快三天,慢则七天,因为发证商需要审核申请者提交的资料。
第一步提交CSR
第二步 资料提交到CA
第三步 发送验证邮件到管理员邮箱
CA获得资料后,将发送一封确认信到管理员邮箱*,信中将包含一个链接。每一个订单,都有一个唯一的PIN以做验证用。
第四步 邮件验证
点击确认信中的链接,可以访问到验证网站,在验证网站,可以看到该订单的申请资料,然后点击
"I Approve"完成邮件验证。
第五步 颁发证书
CA会将证书通过邮件方式发送到申请人自己的邮箱。
*什么是管理员邮箱?
认证系统为了确认您对所申请的SSL服务器域名拥有管理权,会发电子邮件到指定的管理员邮箱中。
例如:您准备申请的SSL证书服务器域名为:www.58ssl.cn,在递交申请时,可供选择的管理员邮箱如下:
admin@58ssl.cn admin@www.58ssl.cn administrator@58ssl.cn administrator@www.58ssl.cn hostmaster@58ssl.cn hostmaster@www.58ssl.cn root@58ssl.cn root@www.58ssl.cn webmaster@58ssl.cn webmaster@www.58ssl.cn
postmaster@www.58ssl.cn
postmaster@www.58ssl.cnSSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。SSL 证书就是遵守SSL协议,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
此指南将分成4个主题:
-
生成证书请求文件 (CSR)
-
安装服务器证书
-
优化加密方式 (weak cipher)
-
设置http跳转到https
第一步:生成证书请求文件 (CSR)
-
进入Java_JRE\bin目录,如
C:\PROGRA~1\Java\jre1.6.0_10\bin
运行如下命令:
keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -keystorec:\server.jks
输入keystore密码:
再次输入新密码:
输入keystore密码,务必牢记此密码,后面在server.xml的配置中需要使用到。
您的名字与姓氏是什么?
[Unknown]:www.abc.com
您的组织单位名称是什么?
[Unknown]:IT Dept.
您的组织名称是什么?
[Unknown]:ABC Technologies, Inc.
您所在的城市或区域名称是什么?
[Unknown]:Shanghai
您所在的州或省份名称是什么?
[Unknown]:Shanghai
该单位的两字母国家代码是什么
[Unknown]:CN
字段 说明 示例 您的名字与姓氏是什么? 申请证书的域名 www.abc.com 您的组织单位名称是什么? 部门名称 IT Dept. 您的组织名称是什么? 企业名称 ABC Technologies, Inc. 您所在的城市或区域名称是什么? 所在城市 Shanghai 您所在的州或省份名称是什么? 所在省份 Shanghai 该单位的两字母国家代码是什么? ISO国家代码(两位字符) CN CN=www.abc.com, OU=IT Dept, O=ABC Technologies, Inc., L=Shanghai, ST=Shanghai, C=CN正确吗?
[否]:Y
请核对信息,如果确认无误后请直接输入Y并回车
输入<mykey>的主密码
(如果和keystore密码相同,按回车):
2. 不需要另外设置独立密码,这里回车即可,完成后在C盘根目录下就会生成一个server.jks的JAVA证书池文件,在证书办法并导入前请妥善保存此文件。
keytool -certreq -alias tomcat -file c:\certreq.csr -keystore c:\server.jks
输入keystore密码:
输入密码后回车,这时会生成一个certreq.csr的文件,此文件为证书请求文件(CSR)。
3. 验证您的证书签章要求
浏览
https://cryptoreport.websecurity.symantec.com/checker/views/csrCheck.jsp
请确保 Signature algorithm:SHA256
请保管好key私钥文件,提交CSR给客服等待证书签发。
第二步:安装服务器证书
证书是审核完毕后您将会收到:
-
服务器证书代码
-
服务器中级CA证书
举例:服务器证书代码 档名为domain.crt、中级CA证书代码档名为ca_intermediate.crt
为保障保障服务器证书在客户端的兼容性,服务器证书代码 与 中级CA证书代码需要合并,以建立安全链 (security chain)。
domain.crt
ca_intermediate.crt
合并domain.crt、ca_intermediate.crt成上下段。域名证书在上,中级证书在下,
中间不空行。
存为domain.crt
附录:如何辨识中级证书
每张证书都会显示发行者,如下:
以上例子有 Symantec Class 3 EV SSL CA – G3, GeoTrust SSL CA – G3, RapidSSL SHA256 – CA。这就是各个证书对应的中级证书。
所谓 “证书安全链” 就是结合秘钥,域名证书,和中级证书,串连起来的加密链,确保加密数据的安全。
导入证书
keytool -import -alias tomcat –keystore server.jks -trustcacerts –file domain.crt
注意: -alias 这个参数值的别名必须和第一步生成CSR时下的别名一样。
首先找到安装 Tomcat 目录下该文件“Server.xml”,一般默认路径都是在 conf 文件夹 中。然后用文本编辑器打开该文件,接着找到如下,黄色部分为您需要修改的部分。
<Connector port=”443″ maxHttpHeaderSize=”8192″ maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″ enableLookups=”false” disableUploadTimeout=”true” acceptCount=”100″ scheme=”https” secure=”true” SSLEnabled=”true” clientAuth=”false” sslProtocol=”TLS” keyAlias=”tomcat” keystoreFile=”your_keystore_file” keystorePass=”your_keystore_password” />
如果没有APR的Tomcat,按下面例子更新Server.xml文件配置
<Connector port=”443″ maxHttpHeaderSize=”8192″ maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″ enableLookups=”false” disableUploadTimeout=”true” acceptCount=”100″ scheme=”https” secure=”true” clientAuth=”false” sslProtocol=”TLS” keystoreFile=”your_keystore_file” keyPass=”your_keystore_password” keystoreType=”PKCS12″/>
注意:不同tomcat版本,修改server.xml的方式不同,请参考tomcat说明:
tomcat 8.0-
http://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html
tomcat 7.0 -
http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html
tomcat 6.0 -
http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
tomcat 5.5 -
http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html
tomcat 5.0 -
http://tomcat.apache.org/tomcat-5.0-doc/ssl-howto.html
tomcat 4.1 -
http://tomcat.apache.org/tomcat-4.1-doc/ssl-howto.html
第三步:优化加密方式 (weak cipher)
(a)适用于Tomcat 5,6
Tomcat 目录下该文件“Server.xml”加入青色的字
<Connector port="443" maxHttpHeaderSize="8192" address="192.168.1.1"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true" clientAuth="false"
keystoreFile="SomeDir/SomeFile.key" keystorePass="Poodle"
truststoreFile="SomeDir/SomeFile.truststore" truststorePass="HomeRun"
sslEnabledProtocol="TLSv1, TLSv1.1, TLSv1.2"
SSL_RSA_WITH_RC4_128_MD5,
SSL_RSA_WITH_RC4_128_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
SSL_RSA_WITH_3DES_EDE_CBC_SHA,
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,
SSL_RSA_WITH_DES_CBC_SHA,
SSL_DHE_RSA_WITH_DES_CBC_SHA,
SSL_DHE_DSS_WITH_DES_CBC_SHA,
SSL_RSA_EXPORT_WITH_RC4_40_MD5,
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,
SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,
SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA,
"/>
(b)适用于Tomcat 7,8
Tomcat 目录下该文件“Server.xml”加入青色的字
<Connector port="443" maxHttpHeaderSize="8192" address="192.168.1.1"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true" clientAuth="false"
keystoreFile="SomeDir/SomeFile.key" keystorePass="Poodle"
truststoreFile="SomeDir/SomeFile.truststore" truststorePass="HomeRun"
sslEnabledProtocol="TLSv1, TLSv1.1, TLSv1.2"
ciphers="TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,
TLS_DHE_DSS_WITH_AES_256_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,
TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
TLS_ECDH_ECDSA_WITH_RC4_128_SHA,
TLS_ECDH_RSA_WITH_RC4_128_SHA,
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_EMPTY_RENEGOTIATION_INFO_SCSVF
"/>
第四步:设置http跳转到https
打开$CATALINA_HOME/conf/web.xml,或者在项目文件的web.xml最后增加下面内容:
<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>
上述配置完成后,重启TOMCAT后即可以使用SSL。IE地址栏中可以直接输入地址测试。