生成 SSL 密钥
先决条件¶
- 一台运行 Rocky Linux 的工作站和一台服务器
- OpenSSL 已安装在您将要生成私钥和 CSR(证书签名请求)的计算机上,以及您最终将安装密钥和证书的服务器上。
- 能够从命令行舒适地运行命令。
- 有益:了解 SSL/TLS 和 OpenSSL 命令。
简介¶
如今,几乎每个网站都应该使用 SSL/TLS(安全套接字层)证书运行。此过程将指导您生成网站的私钥,然后生成您将用于购买证书的 CSR(证书签名请求)。
生成私钥¶
对于初学者来说,SSL/TLS 私钥可以具有不同的尺寸,以比特为单位进行测量,这决定了其破解难度。
截至 2021 年,网站推荐的私钥大小仍为 2048 位。您可以设置更高的值,但将密钥大小从 2048 位加倍到 4096 位仅能提高约 16% 的安全性,存储密钥需要更多空间,并在处理密钥时导致更高的 CPU 负载。
这会降低您的网站性能,而不会带来任何重大的安全提升。坚持使用 2048 位密钥大小,并始终关注当前的推荐。
首先,确保在您的工作站和服务器上安装了 OpenSSL。
dnf install openssl
如果未安装,您的系统将安装它以及任何必需的依赖项。
示例域名为“example.com”。请记住,您需要提前购买并注册您的域名。您可以通过多个“注册商”购买域名。
如果您没有运行自己的 DNS(域名系统),您通常可以使用相同的提供商进行 DNS 托管。DNS 将您的域名(名称)转换为 Internet 可以理解的数字(IP 地址,IPv4 或 IPv6)。这些 IP 地址将是网站实际托管的位置。
使用 openssl
生成密钥
openssl genrsa -des3 -out example.com.key.pass 2048
请注意,您为密钥命名时添加了.pass 扩展名。这是因为运行此命令时,它会要求您输入密码。输入一个您可以记住的简单密码,因为您很快就会删除它。
Enter pass phrase for example.com.key.pass:
Verifying - Enter pass phrase for example.com.key.pass:
接下来,删除该密码。这是因为如果您不删除它,每次网站重启并加载密钥时都需要输入该密码。
您甚至可能不在场输入,或者更糟糕的是,可能无法访问控制台。现在删除它以避免所有这些问题。
openssl rsa -in example.com.key.pass -out example.com.keys
这将再次要求输入该密码以从密钥中删除密码。
输入 example.com.key.pass 的密码
现在,在您输入第三次密码并将其保存为example.com.key后,您的密码已从密钥中删除。
生成 CSR¶
接下来,您需要生成 CSR(证书签名请求),您将使用它来购买证书。
在生成 CSR 的过程中,会提示您输入多条信息。这些是证书的 X.509 属性。
其中一个提示是“通用名称(例如,您的域名)”。此字段必须是 SSL/TLS 正在保护的服务器的完全限定域名。如果您要保护的网站是 https://www.example.com,则输入
openssl req -new -key example.com.key -out example.com.csr
这将打开一个对话框
国家名称(2 个字母代码)[XX]:
输入您网站所在国家的两字符国家代码,例如“US”。
州或省名称(全称)[]:
输入您的州或省的完整官方名称,例如“Nebraska”。
地区名称(例如,城市)[默认城市]:
输入完整城市名称,例如“Omaha”。
组织名称(例如,公司)[默认公司有限公司]:
如果您愿意,可以输入该域所属的组织,或者直接按 Enter 跳过。
组织单位名称(例如,部门)[]:
这将描述您的域名所属的组织部门。同样,您也可以直接按 Enter 跳过。
通用名称(例如,您的姓名或服务器的主机名)[]:
在此处,您必须输入您的网站主机名,例如“www.example.com”。
电子邮件地址 []:
此字段是可选的,您可以选择填写,或者直接按 Enter 跳过。
接下来,该过程会提示您输入额外的属性。可以通过按 Enter 来跳过这些。
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
您的 CSR 已生成完毕。
购买证书¶
每个证书供应商的基本流程都相同。您购买 SSL/TLS 和期限(1 年或 2 年等),然后提交您的 CSR。为此,您需要使用 more
命令,然后复制 CSR 文件的内容。
more example.com.csr
这将显示类似如下内容:
-----BEGIN CERTIFICATE REQUEST-----
MIICrTCCAZUCAQAwaDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5lYnJhc2thMQ4w
DAYDVQQHDAVPbWFoYTEcMBoGA1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZDEYMBYG
A1UEAwwPd3d3Lm91cndpa2kuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAzwN02erkv9JDhpR8NsJ9eNSm/bLW/jNsZxlxOS3BSOOfQDdUkX0rAt4G
nFyBAHRAyxyRvxag13O1rVdKtxUv96E+v76KaEBtXTIZOEZgV1visZoih6U44xGr
wcrNnotMB5F/T92zYsK2+GG8F1p9zA8UxO5VrKRL7RL3DtcUwJ8GSbuudAnBhueT
nLlPk2LB6g6jCaYbSF7RcK9OL304varo6Uk0zSFprrg/Cze8lxNAxbFzfhOBIsTo
PafcA1E8f6y522L9Vaen21XsHyUuZBpooopNqXsG62dcpLy7sOXeBnta4LbHsTLb
hOmLrK8RummygUB8NKErpXz3RCEn6wIDAQABoAAwDQYJKoZIhvcNAQELBQADggEB
ABMLz/omVg8BbbKYNZRevsSZ80leyV8TXpmP+KaSAWhMcGm/bzx8aVAyqOMLR+rC
V7B68BqOdBtkj9g3u8IerKNRwv00pu2O/LOsOznphFrRQUaarQwAvKQKaNEG/UPL
gArmKdlDilXBcUFaC2WxBWgxXI6tsE40v4y1zJNZSWsCbjZj4Xj41SB7FemB4SAR
RhuaGAOwZnzJBjX60OVzDCZHsfokNobHiAZhRWldVNct0jfFmoRXb4EvWVcbLHnS
E5feDUgu+YQ6ThliTrj2VJRLOAv0Qsum5Yl1uF+FZF9x6/nU/SurUhoSYHQ6Co93
HFOltYOnfvz6tOEP39T/wMo=
-----END CERTIFICATE REQUEST-----
您需要复制所有内容,包括“BEGIN CERTIFICATE REQUEST”和“END CERTIFICATE REQUEST”行。然后将这些粘贴到您购买证书的网站的 CSR 字段中。
在颁发您的证书之前,您可能需要根据域名所有权和您使用的注册商执行其他验证步骤。
结论¶
使用此过程生成购买网站证书的所有组件并不困难。
作者:Steven Spencer
贡献者:Ezequiel Bruni, Ganna Zhyrnova