证书链
在一个证书链中,最顶层的证书被称为根证书(Root Certificate),它是一个自签名的数字证书,表明了该证书颁发机构的身份和可信任性。下面的证书则是通过逐级签名形成的链式结构,每个证书都以上一级证书颁布者的公钥进行签名,以确保其合法性和真实性。
获取SSL证书和自签名证书
- 购买证书:可以从不同的 SSL 证书供应商(如 DigiCert、GlobalSign 等)购买 SSL 证书。这些供应商会提供不同类型的证书,例如域名验证、组织验证或扩展验证证书。
- 免费证书:可以使用免费的 SSL 证书,例如 Let’s Encrypt。这些证书由非营利组织颁发,因此相对更便宜且易于获取。
- 自签名证书:可以生成自己的 SSL 证书并将其用于您的网站。但是,由于这些证书没有经过信任的第三方认证机构的颁发,因此在某些情况下可能会被浏览器视为不安全。
本地测试,并不需要使用公开信任的证书,可以使用自签名证书来启用HTTPS,下面就来讲一下如何生成自签名证书吧
前提条件
安装 OpenSSL 工具
windows:https://slproweb.com/products/Win32OpenSSL.html
linux:https://www.openssl.org/source/
本文使用的版本是 OpenSSL 3.0
创建根 CA 证书
1.生成 RSA 私钥
打开命令行终端,进入要存储证书的目录:
openssl-genpkey文档:https://www.openssl.org/docs/man3.0/man1/openssl-genpkey.html
输入以下命令
openssl genpkey -algorithm RSA -out ca.pem -pkeyopt rsa_keygen_bits:2048
genpkey:这告诉 OpenSSL 使用 “genpkey” 子命令,用于生成新的私钥。
-algorithm RSA:此选项指定要使用的密钥算法。在本例中,使用的是 RSA。
-out ca.pem:这告诉 OpenSSL 将生成的密钥写入名为 “ca.pem” 的文件中。
-pkeyopt rsa_keygen_bits:2048:这设置 RSA 密钥的大小为 2048 位。RSA 密钥的位数越大,安全性就越高,但生成和使用密钥的成本也越高。
这将生成一个 RSA 私钥并将其保存到名为 key.pem 的文件中
2.生成根证书签名请求(CSR)
openssl-req文档:https://www.openssl.org/docs/man3.0/man1/openssl-req.html
纯命令行的形式:
openssl req -new -key ca.pem -out ca.csr -subj "/OU=Self Sign CA/O=Self Sign/CN=Self Sign" -addext "keyUsage=critical,keyCertSign,cRLSign" -addext "basicConstraints=critical,CA:TRUE"
<