针对java容器,如tomcat,jboss(resin,jetty这两个第三步另有文件)等,都可以用keystore(jks)文件来部署证书。
获取JKS格式的证书
通过mpki下的订单
1、登录https://mpki.trustasia.com。
2、查看订单后,操作:证书下载。
3、输入订单密码(下订单时候设置的),新设置一个证书密码(之后会用到),选择JKS格式。
4、确定提交后,将下载到一个jks文件,此jks文件的密码就是刚才设置的证书密码。
非mpki,单独生成私钥key文件的
1、获取生成jks文件的需要的文件。这里需要2个文件,1个是私钥文件(此文件是和下订单提交的csr文件一并生成的,文件名里一般保存带有key,用记事本或者vi打开后,开头内容是-----BEGIN RSA PRIVATE KEY-----),可以咨询下提交订单的同事,这个文件没有的话,是无法部署的。另一个文件是证书文件,从证书邮件里,复制第一段(邮件里可能有好几段证书代码,这里第一段指的是您的SSL证书),-----BEGIN CERTIFICATE-----到-----END CERTIFICATE----,保存为server.crt.
这样,就获得了2个文件:
1个是证书文件server.crt;
1个是私钥文件key.txt (任何后缀都可以)。
2、用第一步里的2个文件到这里生成一个jks文件
https://www.trustasia.com/tools/cert-converter.htm
所填项如下:
源格式 pem;
目标格式 jks;
证书文件 选择第一步里的server.crt;
私钥文件 选择第一步里的 key.txt;
Pem私钥密码——不填。
3、密钥库密码和确认密码,自己设置一个,不加特殊符号,一会配置文件里用到(如server.xml)。
4、提交后就能或者一个你们域名的jks文件。
到java容器中部署证书
把jks上传到java容器在的服务器上,路径只要不是webapps下就可以,然后到conf目录下server.xml里配置:
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="conf\domain.jks" keystorePass="pwd"
clientAuth="false" sslProtocol="TLS"/
这个connector元素默认被注释掉的,打开注释后添加一些属性,如:
keystoreFile指向刚才的jks文件;
keystorePass值为jks密码,就是刚才第二步里设置的密码;
Port是端口;
SSLEnable是开启ssl的意思;
保存修改后重启容器即可。
Java容器中的http自动跳转https的安全配置
1、到conf目录下的web.xml。在</welcome-file-list>后面,</web-app>,也就是倒数第二段里,加上这样一段:
<security-constraint>
<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>
这步目的是让非ssl的connector跳转到ssl的connector去。所以还要配置一步。
2、到server.xml去修改
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
redirectPort改成ssl的connector的端口443
重启后便会生效。