SSL/TSL 总结 - Sam Xiao

SSL/TSL 总结 - Sam Xiao

💡 原文中文,约2600字,阅读约需7分钟。
📝

内容提要

本文介绍了使用OpenSSL生成CA证书、服务器证书和客户端证书的步骤,包括创建私钥、证书请求和自签名证书的命令。同时提供了单向和双向认证的验证方法,并解释了证书参数及相关名词的含义。

🎯

关键要点

  • 生成CA证书的步骤包括创建私钥、请求证书和自签名证书。
  • 创建CA证书私钥的命令为openssl genrsa -aes256 -out ca.key 2048。
  • 请求CA证书的命令为openssl req -new -sha256 -key ca.key -out ca.csr。
  • 自签署CA证书的命令为openssl x509 -req -days 36500 -sha256 -extensions v3_ca -signkey ca.key -in ca.csr -out ca.cer。
  • 生成服务器证书的步骤包括创建私钥、请求证书和使用CA证书签署服务器证书。
  • 创建服务器私钥的命令为openssl genrsa -aes256 -out server.key 2048。
  • 请求服务器证书的命令为openssl req -new -sha256 -key server.key -out server.csr。
  • 使用CA证书签署服务器证书的命令为openssl x509 -req -days 36500 -sha256 -extensions v3_req -CA ca.cer -CAkey ca.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.cer。
  • 生成客户端证书的步骤包括创建私钥、申请证书和使用CA证书签署客户端证书。
  • 创建客户端私钥的命令为openssl genrsa -aes256 -out client.key 2048。
  • 申请客户端证书的命令为openssl req -new -sha256 -key client.key -out client.csr。
  • 使用CA证书签署客户端证书的命令为openssl x509 -req -days 36500 -sha256 -extensions v3_req -CA ca.cer -CAkey ca.key -CAserial ca.srl -CAcreateserial -in client.csr -out client.cer。
  • 单向认证的验证命令包括服务器和客户端的openssl命令。
  • 双向认证的验证命令包括服务器和客户端的openssl命令,需验证客户端证书。
  • 证书参数含义包括国家、省份、城市、公司、部门、产品名和邮箱。
  • Linux系统使用CRT格式,Windows系统使用CER格式。
  • X.509是一种通用的证书格式,包含证书持有人的公钥和加密算法等信息。
  • pkcs1到pkcs12是公钥加密的标准,存储格式包括.pn和.p12。
  • 证书的存储格式包括.der、.pem、.key、.cer、.crt、.csr、.pfx和.jks。

延伸问答

如何生成CA证书?

生成CA证书的步骤包括创建私钥、请求证书和自签名证书,具体命令为:创建私钥:openssl genrsa -aes256 -out ca.key 2048;请求证书:openssl req -new -sha256 -key ca.key -out ca.csr;自签名证书:openssl x509 -req -days 36500 -sha256 -extensions v3_ca -signkey ca.key -in ca.csr -out ca.cer。

如何生成服务器证书?

生成服务器证书的步骤包括创建私钥、请求证书和使用CA证书签署,命令为:创建私钥:openssl genrsa -aes256 -out server.key 2048;请求证书:openssl req -new -sha256 -key server.key -out server.csr;签署证书:openssl x509 -req -days 36500 -sha256 -extensions v3_req -CA ca.cer -CAkey ca.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.cer。

如何生成客户端证书?

生成客户端证书的步骤包括创建私钥、申请证书和使用CA证书签署,命令为:创建私钥:openssl genrsa -aes256 -out client.key 2048;申请证书:openssl req -new -sha256 -key client.key -out client.csr;签署证书:openssl x509 -req -days 36500 -sha256 -extensions v3_req -CA ca.cer -CAkey ca.key -CAserial ca.srl -CAcreateserial -in client.csr -out client.cer。

单向认证的验证命令是什么?

单向认证的验证命令为:服务器:openssl s_server -CAfile ca.cer -cert server.cer -key server.key -accept 22580;客户端:openssl s_client -CAfile ca.cer -cert client.cer -key client.key -connect 127.0.0.1 -port 22580。

双向认证的验证命令是什么?

双向认证的验证命令为:服务器:openssl s_server -CAfile ca.cer -cert server.cer -key server.key -accept 22580 -Verify 1;客户端:openssl s_client -CAfile ca.cer -cert server.cer -key server.key -cert client.cer -key client.key -connect 127.0.0.1 -port 22580。

证书参数的含义是什么?

证书参数的含义包括:C(国家)、ST(省份)、L(城市)、O(公司)、OU(部门)、CN(产品名)、emailAddress(邮箱)。

➡️

继续阅读