常用OpenSSL命令(密钥生成,CA签发证书,自己CA自签发)
CA:
为可信任的第三方。
CA签发证书:
用第三方密钥和证书签名你的证书(表示确认你这个证书,一般由CA提供方执行签发)
自己CA自签发:
自己新建一个CA密钥和CA证书,签发给第三方证书,然后服务端可用这个CA来验证第三方,用来验证客户端是否是合法的客户端
双向验证:
用CA签发的证书,只能被CA证书验证通过,通过CA签发的客户端证书,通过对服务端发起连接握手并交换证书,并验证客户端证书是否是CA签发的证书达到验证客户端目的。
常规HTTPS是单向验证。只是客户端(浏览器)得到证书,然后验证是否为浏览器内部已经安装或默认就有的顶级CA验证的证书,来确认服务端,只是客户端验证服务端。
# 生成CA密钥(常规RSA CA密钥)
openssl genrsa -out ca.key 2048
# 生成CA证书,本过程还会要求输入证书的所在地,公司等 (自己签发一个CA证书)
openssl req -x509 -new -nodes -key ca.key -days 365 -out ca.crt
# 生成服务器证书RSA的密钥对(生成服务端密钥)
openssl genrsa -out server.key 2048
# 生成服务端证书CSR,本过程会要求输入证书所在地,公司等
openssl req -new -key server.key -out server.csr
# 生成服务器端证书(CA密钥签名这个服务端/客户端证书,第三方客户端/服务端信任这个CA,你的证书就能通过验证)
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
# 有的程序只能使用pkcs12格式 (如C#平台)
openssl pkcs12 -export -out client.pfx -inkey client.key -in client.crt