SSLSocket通信里面需要用到几个证书,生成步骤就这里写。

首先服务器用的是Tomcat,生成工具直接用Tomcat里面的keytool就好了。(正式商用的时候还是付费买个证书吧,自签的证书服务端的验证好像说是客户端决定信不信任而已)

生成步骤

一、生成服务端证书

(1)win+R 然后打开cmd
(2)进去之后cd 路径 到jdk安装位置里面的bin目录里面

cd C:\Program Files\Java\jdk1.8.0_31\bin

(3)打开keytool生成证书

keytool -genkey -v -alias sever -keyalg RSA -keystore C:\Users\Otto\Desktop\cert\server.keystore

server.keystore后面可以加 -validity 365,以此规定证书有效期,数字是多少就代表多少天(上面的语句表示365天),不加这个就默认90天;alias后面的server是证书自定义名字,要跟最后那个证书生成路径里面生成证书的名字对得上。

这一步操作如下:

生成服务端证书


您的名字与姓氏时候什么?这一块填写的东西必须是外网访问这一个服务器的ip或者网址,本地测试的时候直接localhost就好了,不用管。

二、生成客户端证书

(1)同样,cd进去jdk的bin目录,然后用keytool生成证书

keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore C:\Users\Otto\Desktop\cert\client.p12

这里格式最好用PKCS12,具体原因不知道,估计是方便浏览器加载证书。

这一步操作如下:

生成客户端证书


到这里就没什么讲究了。

三、服务端信任客户端证书

说白了就是把客户端证书添加到服务端的证书库里面去
(1)证书库用的是cer格式的证书,所以客户端那个p12格式的就要转换一下格式

keytool -export -alias client -keystore C:\Users\Otto\Desktop\cert\client.p12 -storetype PKCS12 -storepass 22222wwwww -rfc -file C:\Users\Otto\Desktop\cert\client.cer

这里alias啊密码啊路径啊都不要写错了,写错就不行了。

这一步操作如下:

信任客户端证书

(2)把刚刚生成的cer证书导入到服务端的证书库,添加为信任证书

keytool -import -v -file C:\Users\Otto\Desktop\cert\client.cer -keystore C:\Users\Otto\Desktop\cert\server.keystore

这一步操作如下:

导入服务端证书库

(3)查看服务器的证书库,就看看服务端证书库而已

keytool -list -keystore C:\Users\Otto\Desktop\cert\server.keystore

这一步操作如下:

查看服务端证书库

四、客户端信任服务端证书

(1)服务端证书倒过来生成个cer格式的,给客户端导入证书库

keytool -keystore C:\Users\Otto\Desktop\cert\server.keystore -export -alias server -file C:\Users\Otto\Desktop\cert\server.cer

五、生成的证书

生成的证书


六、Tomcat服务器设置(这个很重要)
文件夹去到tomcat目录下的/conf/server.xml里面,把Connector那一段的注释去掉,然后改成如图的样子:

tomcat设置

七、客户端安装一下证书
(1)双击client.p12,安装证书。
(2)把server.cer添加到“受信任的根证书颁发机构”(针对自签和本地测试的时候提示“此网站安全证书有问题”)

基本就这样了,顺着来做就好了,个人习惯先做服务端的步骤然后再做客户端的步骤(就好像写的程序那样,先写好服务端,运行好服务端,再去搞客户端)

 

推荐阅读:  SSL证书生成解决方法    自签名SSL证书的生成

在线咨询
在线支持
在线交谈:  
请加QQ后交谈,临时会话无法收到信息
QQ号码:395947308
客服热线:400-036-0906