Java环境下 SslSocket 服务端及客户端简单例子

客户端代码如下:



服务端代码如下:

1 SSL单向认证概念

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

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

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

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

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

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

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

可以执行下面的命令:

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

4 导出公钥证书

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

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

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

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

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

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

执行

后,首先会提示输入 truststore 的密码,如下图:

6 验证5生成的truststore文件

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

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

参考链接


Java环境下 SslSocket 服务端及客户端简单例子

发布者

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注