跳转至

https - RSA 密钥生成

下述的脚本已经被我使用很多次了。 无论您使用openssl命令结构的频率有多高,有时您都必须回头参考这个过程。 这个脚本允许您使用RSA为网站自动生成密钥。 请注意,这个脚本是用2048位的密钥长度硬编码的。 对于那些强烈认为密钥长度最小应该是 4096 位的人来说,只需要更改脚本的一部分即可。 请记住,你需要网站在设备上加载时所用的内存和速度以及更长密钥长度带来的安全性之间做权衡。

脚本

您可以随意命名这个脚本,如 keygen.sh, 使用 (chmod +x scriptname) 将该脚本变得可执行,然后把它放到您的 path 目录中, 示例: /usr/local/sbin

#!/bin/bash
if [ $1 ]
then
      echo "正在生成 2048 位的密钥 - 你需要输入一个密码并且确认它"
      openssl genrsa -des3 -out $1.key.pass 2048
      echo "现在为了实际使用,我们将会创建一个没有密码保护的密钥,但您需要再次输入在上一步骤您设置的密码"
      openssl rsa -in $1.key.pass -out $1.key
      echo "下一步,我们将会生成 csr 证书"
      openssl req -new -key $1.key -out $1.csr
      #cleanup
      rm -f $1.key.pass
else
      echo "需要密钥名称参数"
      exit
fi

说明

您需要连续三次输入正确的密码。

简要说明

  • 这个 bash 脚本需要一个参数 ($1),它是网站的名称(不带www等) 例如,“mywidget”。
  • 脚本使用密码和2048位长度创建默认密钥(如上所述,可以编辑为更长的4096位长度)
  • 然后立即从密钥中删除密码,原因是Web服务器重新启动将需要在每次重新启动时输入密钥密码,这在实际中可能会有问题。
  • 接下来,脚本创建CSR(Certificate Signing Request,证书签名请求),然后可以使用它从提供商那里购买SSL证书。
  • 最后,清理步骤删除了先前创建的带有密码的密钥。
  • 输入不带参数的脚本名将生成错误:“需要密钥名称参数”。
  • 此处使用位置参数变量,即 $n。 其中,$0表示命令本身,$1到$9表示第一到第九个参数。 当数字大于10时,需要使用大括号,如${10}

最后更新: February 25, 2022

Author: Steven Spencer