跳过内容

生成 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