跳至内容

https - RSA 密钥生成

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

脚本

将此脚本命名为你喜欢的任何名称,例如:keygen.sh,使脚本可执行(chmod +x scriptname)并将其放置在路径中的目录中,例如:/usr/local/sbin

#!/bin/bash
if [ $1 ]
then
      echo "generating 2048 bit key - you'll need to enter a pass phrase and verify it"
      openssl genrsa -des3 -out $1.key.pass 2048
      echo "now we will create a pass-phrase less key for actual use, but you will need to enter your pass phrase a third time"
      openssl rsa -in $1.key.pass -out $1.key
      echo "next, we will generate the csr"
      openssl req -new -key $1.key -out $1.csr
      #cleanup
      rm -f $1.key.pass
else
      echo "requires keyname parameter"
      exit
fi

注意

你将在连续三次中输入密码短语。

简要描述

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

作者:史蒂文·斯宾塞