用keytool制做证书并在tomcat配置https服务(一)html
用keytool制做证书并在tomcat配置https服务(二)浏览器
用keytool制做证书并在tomcat配置https服务(四)tomcat
模拟CA实现对服务器证书的认证安全
咱们在前篇的双向认证上继续。服务器
CA认证,是这个机构的根证书已经存在于浏览器中的【受信任的根证书颁发机构】,浏览器信任他,因此不会出现该证书不安全的提示。spa
那么咱们能够模拟一个CA,本身对服务器端证书进行签名,而后把模拟CA的根证书导出来,发送给客户端,让客户端添加到信任机构。3d
1.首先服务端须要生成一个带证书及主体信息的签名申请文件csr格式,CA须要用来制做签名证书。code
keytool -certreq -keyalg RSA -alias tomcat -sigalg SHA256withRSA -keystore D:/ssl/keystore.jks -file D:/ssl/serverreq.csr
2.CA也是有本身的密钥对和密钥库的,建立好。server
keytool -genkey -alias rootca -keypass 123456 -keyalg RSA -keysize 2048 -validity 365 -storetype JKS -keystore D:/ssl/castore.jks -storepass 123456
查看一下htm
keytool -list -v -keystore D:/ssl/castore.jks
3.CA库有了,而后CA用本身的私钥对服务端申请签名文件中的证书进行签名操做。
keytool -gencert -alias rootca -keystore D:/ssl/castore.jks -infile D:/ssl/serverreq.csr -outfile D:/ssl/signedserver.cer
而后咱们看一下,发布者是CA
keytool -printcert -file D:/ssl/signedserver.cer
4.咱们将CA库的证书导出来,这就是上边这个signedserver.cer的根证书。
keytool -export -alias rootca -keystore D:/ssl/castore.jks -storetype JKS -keypass 123456 -file D:/ssl/rootca.cer
这个证书的做用有两个:
(1)须要给客户端,客户端须要这个根证书对服务端证书进行验证。
(2)咱们须要把新生成的签名证书再导入到服务端的库里覆盖原来的未签名证书。
由于是根证书作的签名,不把根证书导入就会报【没法从回复中创建链】这么个错误。
因此先导入根证书,再导入服务端签名证书。
5.服务端导入根证书
keytool -import -v -alias rootca -file D:/ssl/rootca.cer -keystore D:/ssl/keystore.jks
6.服务端导入签名证书覆盖原证书
keytool -import -v -alias tomcat -file D:/ssl/signedserver.cer -keystore D:/ssl/keystore.jks
来看一下服务端的库
keytool -list -v -keystore D:/ssl/keystore.jks
这里边一共有三条信息:
(1)rootca证书信息
(2)刚刚导入的覆盖的别名叫tomcat的签名证书
(3)上一篇作的双向认证导入的客户端证书。
7.把根证书rootca.cer发送给客户端,安装到浏览器中的【受信任的根证书颁发机构】。
到这就结束了,而后咱们启动tomcat看下效果【tomcat的server配置仍是上一篇的配置,没有变】。
而后咱们点击上边的这个小锁查看下证书信息。
结束。