入门参考:
SSL/TLS 双向认证(一) – SSL/TLS工作原理
SSL-TLS 双向认证(二) – 基于mosquittto的MQTT双向认证
何为SSL/TLS单向认证,双向认证?
单向认证指的是只有一个对象校验对端的证书合法性。
通常都是client来校验服务器的合法性。那么client需要一个ca.crt,服务器需要server.crt,server.key
双向认证指的是相互校验,服务器需要校验每个client,client也需要校验服务器。
server 需要
:server.key 、server.crt 、ca.crt
client 需要
:client.key 、client.crt 、ca.crt
参考:SSL与TLS的区别以及介绍,文件说明
文件说明:
- TLS:传输层安全协议 Transport Layer Security
- SSL:安全套接字层 Secure Socket Layer
- KEY:通常指私钥
- CSR:Certificate Signing Request,即证书签名请求,这不是证书,可以简单理解成公钥,生成证书时要把这个提交给权威的证书颁发机构。
- CRT:certificate的缩写,即证书。
openssl 给自己颁发证书的步骤:
单向认证配置,双向认证配置
前提:先建一个cert目录,cd到该目录,以下所有命令的当前路径均为该目录
1、
生成私钥KEY
openssl genrsa -des3 -out server.key 2048
这一步执行完以后,cert目录下会生成server.key文件
2、
生成证书请求文件CSR
openssl req -new -key server.key -out server.csr
该命令先进入交互模式,让你填一堆东西,参考下图:
要注意的是Common Name这里,要填写成使用SSL证书(即:https协议)的域名或主机名,否则浏览器会认为不安全。例如:如果以后打算用https://yjm-docker/xxx 这里就填写yjm-docker
3、
生成CA的证书
前面提过X.509证书的认证者总是CA或由CA指定的人,所以得先生成一个CA的证书
openssl req -new -x509 -key server.key -out ca.crt -days 3650
4、
最后用第3步的CA证书给自己颁发一个证书
openssl x509 -req -days 3650 -in server.csr \
-CA ca.crt -CAkey server.key \
-CAcreateserial -out server.crt
最后、
CA校验证书测试
openssl verify -CAfile ca/ca.crt server/server.crt
openssl verify -CAfile ca/ca.crt client/client.crt