前言
最近项目里面用到了SSL双向认证和传输加密的技术,研究了一下,想把相关的指令和代码分享出来,以期后来者能够少踩坑,顺利解决问题。我们的项目服务器是C,客户端为Java,CS架构,中间通过Socket通讯。
OpenSSL和Java KeyStore本质上没有关系,只是客户端用到Java,Java里面SSL认证加密的密码和证书需要存储到KeyStore这个容器里面,所以OpenSSL产生的相关资料需要导入keyStore容器。当然也可以反过来,用Java的KeyTool产生资料,再导出密码、证书,给服务器端C使用。不过OpenSSL比Java的keytool强大很多,故选择前一种方式。OpenSSL产生资料,存入KeyStore。本文只介绍用到的一系列指令。
这里涉及到三份证书。根证书(root.crt),自签名的,用于给其它证书授权。服务器证书(server.crt)。以及客户端证书(client.crt),一般系统不需要,我们的系统是双向认证,客户端也要证书。