生成 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 将您的命名域名转换为互联网可以理解的数字(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”
州或省名称(全称) []:
输入您所在的州或省的完整官方名称,例如“内布拉斯加州”
地名(例如,城市)[默认城市]:
输入完整的城市名称,例如“奥马哈”
组织名称(例如,公司)[默认公司有限公司]:
如果需要,您可以输入此域所属的组织,或者直接按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