ssl socket java_Java环境下 SslSocket 服务端及客户端简单例子

1 SSL单向认证概念

当客户端(服务请求方)向服务端(服务提供方)发起请求时,服务器端需要向客户端提供认证。服务端需要生成一个keystore和一个服务器密钥对儿(公钥和私钥),客户端需要生成一个truststore,然后导入服务端的公钥证书。

2 keystore以及服务器密钥对儿的生成

keytool-genkeypair -alias certificatekey -keyalg RSA -validity 365 -keystore shfqkeystore.jks

这条命令会在生成keystore后接着生成一个密钥对儿。RSA是非对称密钥算法,也可以改为 keytool支持的其他密钥算法,365代表的是证书的有效期,可以自己指定,shfqkeystore.jks是keystroe的名称,也可以自己指定。打开cmd命令行,输入:

keytool-genkeypair -alias certificatekey -keyalg RSA -validity 365 -keystore shfqkeystore.jks

会提示输入keystore的密码,接着会提示输入名字等信息,如下图:

295cf9f365374f3092441e4dab29138a.png

补充:输入的主密码,是指生成服务端证书的私钥。服务端私钥如果和keystore的相同的话,直接按回车。建议直接按回车,即服务端私钥和keystore的密码相同。如果两者的密码不相同的话在服务端tomcat server.xml中配置完毕以后启动tomcat会报一个UnrecoverableKeyException: Cannot recover key的异常(后面会介绍服务端 tomcat server.xml 的配置的)。

keytool会把生成的keystore文件默认保存到C:\Users\lenovo路径下(用户目录下的计算机名称下)接下来生成的所有文件也都保存到此处。

3 验证新生成的keystor文件以及证书信息

可以执行下面的命令:

keytool -list -v -keystore shfqkeystore.jks

会显示出以下信息,如图:

b1c27d5ff0320662e2ffdde7075a2199.png

4 导出公钥证书

下面的命令可以导出自签公钥证书:

keytool -export -alias certificatekey -keystore shfqkeystore.jks -rfc -file shfqcert.cer

其中shfqcert.cer是导出证书的名称,可以随便起个名字,shfqkeystore.jks是2中生成的keystore 文件。

执行上面的命令会要求输入shfqkeystore的密码,会显示以下信息,如下图。

25157f4a717143d7a0ed7723360f8825.png

5 Truststore的生成以及公钥证书的导入

把4生成的公钥证书shfqcert.cer导入到truststore中

Keytool -import -alias certificatekey -file shfqcert.cer -keystore

shfqtruststore.jks

shfqcert.cer是4导出的公钥证书,shfqtruststore.jks可以随便起,是生成的truststore的文件名。这条命令首先会生成一个truststore,然后导入4生成的公钥证书shfqcert.cer。

执行keytool -import -alias certificatekey -file shfqcert.cer  -keystore shfqtruststore.jks后,首先会提示输入truststore的密码,如下图:

c1f3041e13e1e28e217549797c815d9f.png

6 验证5生成的truststore文件

keytool -list -v -keystore shfqtruststore.jks

shfqtruststore.jks是5生成的truststore文件名。

b7e57d3102db5d4ddeb47d53fbd8fc9b.png

到此为止,keystore、truststore、公钥证书都已生成完毕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值