tls是最新的ssl, 一般说的ssl就是tls
生成自签名文件
centos7下生成
1. 安装openssl
yum install openssl
2. 生成自签发根证书
取名 ca.cer
给客户端放着
里面有绝对可信的公钥,
用来验服务端的证书4,和拿到服务器的公钥
3. 服务端生成私钥
取名server-key.pem
服务端放着,解客户端最开始用公钥加密秘文的
4. 用 [根证书] 和 [服务端] 私钥签发 server端证书
取名 server.cer
连接的时候,服务端会给客户端发,
证明自己身份,传公钥的
因为是用2的根证书签发的, 持有根证书的客户端收到以后, 就能知道可信
服务端用 根证书2的 公钥, 能解开 服务端证书里面带的服务端公钥
然后就可以用服务端公钥加密, 这样加密过的信息, 就只有持有服务端私钥的对应服务端才能解开看到
证书生成是要指定期限的, 如果时间超过了, 客户端也不会认
服务端就需要找 根证书 重新签发新的服务端证书
文件格式转换
证书文件 .cer 可以转成 .crt 格式的, 效果是一样的
openssl x509 -inform PEM -in server.cer -out server.crt
私钥格式.pem .key
就是一样的, 只是后缀不同, 直接改后缀
文件的使用
-
1.自签发根证书 ca.cer ,客户端放着,等着验3
-
2.服务端自己生成的私钥
server.key
服务端放着
- 服务端证书
server.crt
, 服务端放着,等着给客户端发
- 服务端证书
netty代码 客户端
就是在所有handler前面加一个SslHandler
这个SslHandler
是SslContext
+要连的服务端ip和port来生成的
SslContext
一开始就传入'ca.cer'(通过SimpleTrustManagerFactory
)
netty代码 服务端
也是在最前面加一个SslHandler
也是SslContext
生成的,
SslContext
传入了 服务端的私钥 和 证书
还要指定协议
sslHandler.engine().setEnabledProtocols(new String[] {"TLSv1.2"});
网友评论