跳至内容

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