使用jdk生成自签发证书(过程总结)
前言:
最近在做华为NB-IoT接口开发,需要用到双向认证,就去学了一下。
然后我将过程总结了一下。
相关华为论坛链接:http://developer.huawei.com/ict/forum/thread-25457.html
里面一些ca.jks和outgoing.CertwithKey.pkcs12相关步骤能看懂就看,看不懂没关系。
2、使用keytool命令生成证书tomcat.keystore
keytool -genkey -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -validity 36500
以下是命令的参数介绍
keytool
-genkey
-alias tomcat(别名)
-keypass 123456(别名密码)
-keyalg RSA(算法)
-keysize 1024(密钥长度)
-validity 365(有效期,天单位)
-keystore tomcat.keystore(指定生成证书的位置和证书名称)
-storepass 123456(获取keystore信息的密码)
由于不能直接将PKCS12格式的证书库导入,必须先把客户端证书导出为一个单独的CER文件
完成之后通过list命令查看服务器的证书库,
可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书:
keytool -list -v -keystore tomcat.keystore
由于是双向SSL认证
(1)、客户端也要验证服务器证书,因此,必须把服务器证书添加到浏览器的“受信任的根证书颁发机构”
(2)、服务器也要验证客户端提供的证书,因此,必须把client.p12证书添加到浏览器的“个人”证书里面(这步非常关键)。
由于不能直接将keystore格式的证书库导入,必须先把服务器证书导出为一个单独的CER文件
2、将tomcat.cer证书导入到受信任的根证书颁发机构,点击导入,按照步骤添加
然后一直下一步,最后选“是”
3、将client.p12添加到个人证书
然后一直下一步,最后选“是”。密码是之前生成客户端证书时候的密码。
五、配置tomcat的server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" SSLEnabled="true" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS" keystoreFile="C:\Program Files\Apache Software Foundation\Tomcat 8.5\tomcat.keystore" keystorePass="123456" truststoreFile="C:\Program Files\Apache Software Foundation\Tomcat 8.5\tomcat.keystore" truststorePass="123456" />