关于HTTPS的加密过程以及原理我在上一篇《HTTPS借口加密和身份认证》中写了。
1.HTTPS自签CA证书及服务器配置
生成服务器证书
A、输入keystore密码:此处需要输入大于6个字符的字符串。
B、“您的名字与姓氏是什么?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP(就是你将来要在浏览器中输入的访问地址),否则浏览器会弹出警告窗口,提示用户证书与所在域不匹配。
C、你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息。
D、输入的密钥口令,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以,完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件。
接下来利用server.jks来签发证书
C:\Users\bwkt>keytool -export -aliasserver -file server.cer -keystore server.jks
配置Tomcat
找到tomcat/conf/sever.xml文件,并以文本形式打开。
找到端口为8443的标签,修改为:
disableUploadTimeout="true" enableLookups="true"
keystoreFile="C:\Users\bwkt\server.jks" keystorePass="123456"
maxSpareThreads="75"
maxThreads="200" minSpareThreads="5" port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS"
/>
注:keystoreFile:jks文件存放路径,keystorePass:生成证书时候的密码
测试:启动Tomcat服务器,在浏览器中输入https://localhost:8443/,浏览器提示下图即为成功。
1.2双向认证--服务器配置
生成客户端证书
按照生成证书的方式,再生成一对这样的文件,我们命名为:client.jks,client.cer。
将client.cer添加到client_for_server.jks文件中
配置服务器:将端口为8443的标签,修改为:
disableUploadTimeout="true" enableLookups="true"
keystoreFile="C:\Users\bwkt\server.jks" keystorePass="123456"
truststoreFile="C:\Users\bwkt\client_for_server.jks" truststorePass="123456"
maxSpareThreads="75"
maxThreads="200" minSpareThreads="5" port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS"
/>
注:truststoreFile:信任证书的文件路径,truststorePass:信任证书的秘密
测试:启动Tomcat服务器,在浏览器中输入https://localhost:8443/,浏览器提示下图即为成功。
1.3 导出P12证书
上篇文章我们知道服务器认证客户端需要在客户端导入P12证书,那么如何用根证书颁发P12证书呢。
windows电脑可以使用Portecle来转:
2.使用第三方服务器数字证书
第三方的CA证书,我们需要做的就是提交材料购买一个服务器根证书,具体流程如下:
1.首先需要给第三方机构提供服务器的IP地址(注意:服务器证书绑定的IP地址,证书只能用来验证服务器)。
2.这里我们要求第三方机构给我们提供一个.pfx格式的证书。
3.我们拿到pfx格式的证书将其转换为jks格式的证书(使用Portecle转换)如下图所示:
4.拿到jks格式的证书后,我们用到服务器配置Tomcat,找到tomcat/conf/sever.xml文件,并以文本形式打开,找到端口为8443的标签,修改为:
注:keystoreFile:jks文件存放路径,keystorePass:生成证书时候的密码
5.完成以上操作是服务器证书配置后,启动Tomecat服务器,可到浏览器中输入https://115.28.233.131:8443,显示如下则表示成功(和12306的效果是一样的):
注意:如果要做支付网关证书、服务器客户端相互认证的话,还需要身份认证网关,这个网关需要购买设备,有G2000和G3000,G2000是1U设备,G3000是3U设备,价格可能在20到30万。购买网关之后第三方机构给我们提供证书,有服务器证书和移动端证书(可以是多个移动端),这些证书要通过他们的网关,给到我们手里的可以是jks格式证书。