生成 SSL 密钥¶
准备工作¶
- 一个工作站和一台运行 Rocky Linux 的服务器。
- 在要生成私钥和 CSR 的机器上以及最终安装密钥和证书的服务器上安装 OpenSSL。
- 能够轻松地从命令行运行命令。
- 有关 SSL 和 OpenSSL 命令的知识。
简介¶
如今,每个网站都应使用 SSL(安全套接字协议层)证书运行。本文将指导您生成网站私钥,然后从中生成用于购买新证书的 CSR(证书签名请求)。
生成私钥¶
对于新手而言,SSL 私钥可以有不同的大小(以位为单位),其大小决定了破解的难易程度。
截至 2021 年,推荐的网站私钥大小仍为 2048 位。您可以使用更多位的密钥,但是将密钥大小从 2048 位增加一倍至 4096 位只会使安全性提高约 16%,但需要更多空间以存储密钥,并且在处理密钥时会导致 CPU 负载增高。
密钥位数过多不会获得任何显著的安全性,反而降低网站性能。 目前采用的密钥大小为 2048,始终关注当前推荐的密钥大小。
首先,请确保工作站和服务器上都安装了 OpenSSL:
dnf install openssl
如果未安装,则系统将安装它以及所有需要的依赖项。
示例使用的域是 ourownwiki.com。注意,您需要提前购买和注册域名。您可以通过多个“注册商”购买域名。
如果您没有运行自己的 DNS(域名系统),您可以使用 DNS 托管提供类似功能。DNS 将您的命名域转换为 Internet 可以理解的数字(IP地址、IPv4 或 IPv6)。这些 IP 地址将是网站的实际托管位置。
使用 openssl 生成密钥:
openssl genrsa -des3 -out ourownwiki.com.key.pass 2048
注意,将密钥命名为 .pass 扩展名。这是因为一旦执行此命令,它就会要求您输入密码。输入一个您可以记住的简单密码,因为我们稍后就会移除这个密码:
Enter pass phrase for ourownwiki.com.key.pass:
Verifying - Enter pass phrase for ourownwiki.com.key.pass:
接下来,移除该密码。这样做的原因是,如果不移除它,则每次 Web 服务器重新启动并加载密钥时,都需要输入该密码。
您可能不准备输入它,或者更糟的是,可能根本没有一个控制台可以输入它。现在将其移除以避免这些情况:
openssl rsa -in ourownwiki.com.key.pass -out ourownwiki.com.key
这将再次请求该密码从密钥中移除密码:
Enter pass phrase for ourownwiki.com.key.pass:
现在您已经第三次输入了密码,它已经从密钥文件中删除并另存为 ourownwiki.com.key。
生成 CSR¶
接下来,需要生成将用于购买证书的 CSR(证书签名请求)。
在生成 CSR 的过程中,系统将提示您输入一些信息。这些是证书的 X.509 属性。
其中一个提示是“公用名”。注意,此字段必须填写受 SSL 保护的服务器的完全限定域名。如果要保护的网站是 https://www.ourownwiki.com,然后在此提示下输入 www.ourownwiki.com:
openssl req -new -key ourownwiki.com.key -out ourownwiki.com.csr
它将产生以下对话:
Country Name (2 letter code) [XX]:
输入站点所在的国家/地区码(两个字符),例如“US”。
State or Province Name (full name) []:
输入所在州或省的全名,例如“Nebraska”。
Locality Name (eg, city) [Default City]:
输入所在城市的全名,例如“Omaha”。
Organization Name (eg, company) [Default Company Ltd]:
如果需要,您可以输入此域所属的组织,或者只需按“Enter”键即可跳过。
Organizational Unit Name (eg, section) []:
这将描述您的域所属的组织部门。同样,您只需按“Enter”键即可跳过。
Common Name (eg, your name or your server's hostname) []:
此处必须输入站点主机名,例如“www.ourownwiki.com”。
Email Address []:
此字段是可选的,您可以填写,也可以按“Enter”键跳过。
接下来,将要求您输入额外的属性,在以下两个属性中按“Enter”键跳过:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
现在,您应该已经生成了 CSR。
购买证书¶
每个证书供应商的流程基本相同。您购买 SSL 和期限(1 年或 2 年等)。然后提交 CSR。为此,您需要使用 more
命令,然后复制 CSR 文件的内容。
more ourownwiki.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 字段中。
在颁发证书之前,您可能必须执行其他验证步骤,具体取决于域的所有权,所使用的注册商等。颁发时,它应与提供者提供的中间证书一起颁发,您还将在配置中使用该证书。
总结¶
生成用于购买网站证书的所有位和片段并不是非常困难,可以由系统管理员或网站管理员执行上述过程以完成该任务。