ssl单向认证CA证书

版权声明:转载请注明出处--mosterRan https://blog.csdn.net/qq_35975685/article/details/84996550

因为最近在弄这个CA证书,也踩了好多的坑,但最好还是弄好了,来写篇博客记录下来。
CA 证书使用的是 jdk 自带的工具生成的 keytool.exe 可以自己进入JAVA_HOME\bin 目录下面可以看到。在目录下如果是 windows 的朋友可以使用 cmd 命令

keytool -help 查看一下keytool的提示帮助

生成证书命令如下:

服务器端:
keytool -genkey -alias securechat -keysize 2048 -validity 365 -
keyalg RSA -dname "CN=localhost" -keypass sNetty -storepass sNetty -keystore sChat.jks 生成服务端密钥库
IOS端:
keytool -export -alias securechat -keystore sChat.jks -storepass sNetty -file sChat.cer 从密钥库中导出证书,这个证书.cer结尾的就可以给ios来用
安卓端:
keytool -importcert -trustcacerts -keystore sChat.bks -file sChat.cer -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider cer转bks 生成android客户端的证书库并添加信任

因为安卓端有点特殊只能通过解析BKS的不能解析CER的,而JAVA的服务端解析的是JKS的。如果是单向的ca认证那么用上面的生成证书的命令就完事了,但如果是双向验证,那么就要把他们分别添加到各自的信任库里面,这样才可以。

下面是实战中的一些操作

查看sChat.jks
keytool -list -v -keystore sChat.jks
查看sChat.cer
keytool -printcert -v -file sChat.cer
查看bks的命令
keytool -list -v -keystore sChat.bks -storetype BKS -storepass sNetty -provider org.bouncycastle.jce.provider.BouncyCastleProvider

有人可能会问这个org.bouncycastle.jce.provider.BouncyCastleProvider是什么,这个就是用来将cer证书转换成KBS的提供方BC,所以如果我们不导入他们的jar包也可能会报错。
java.lang.NoClassDefFoundError: org.bouncycastle.jce.provider.Bounc.CastleProvider会报这个错解决办法如下

1.查看/etc/profile下JAVA_HOME配置路径,
如果不存在,使用whereis java命令你会看到java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java
打开java.conf,找到JAVA_HOME路径
2.将bcprov-jdk16-146.jar放入JAVA_HOME/jre/lib/ext下
3.打开JAVA_HOME/jre/lib/security下的java.security文件,在下面加上
security.provider.x=org.bouncycastle.jce.provider.BouncyCastleProvider

下面是jar包下载链接
https://download.csdn.net/download/qq_35975685/10849211

猜你喜欢

转载自blog.csdn.net/qq_35975685/article/details/84996550