非交互式创建SSL证书[关闭]


28

我想以静默方式(非交互方式)创建SSL证书。即,没有得到任何数据提示。

我创建证书的通常方法是:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 \
    -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem 

我尝试了以下方法:

openssl genrsa -out server.key 2048
touch openssl.cnf

cat >> openssl.cnf <<EOF
[ req ]
prompt = no
distinguished_name = req_distinguished_name

[ req_distinguished_name ]
C = GB
ST = Test State
L = Test Locality
O = Org Name
OU = Org Unit Name
CN = Common Name
emailAddress = test@email.com
EOF

openssl req -x509 -config openssl.cnf -nodes -days 7300 \
    -signkey server.key -out /etc/ssl/private/pure-ftpd.pem 

但是我仍然提示输入数据。


1
您能否提供解释或输出,而不是期望的结果?
帕特里克

我得到的帮助是输出openssl req -x509 -config openssl.cnf -nodes -days 7300 -signkey server.key -out /etc/ssl/private/pure-ftpd.pem
TheNiceGuy 2013年

遇到问题时,最好提供错误输出。我猜你的问题是因为-signkey。这不是openssl req我系统上的有效选项。错误消息将其作为第一行:unknown option -signkey
Patrick

那么那个签名密钥应该告诉SSL使用我知道的提供的密钥吗?
TheNiceGuy

您的“创建证书的常规方法”不会提示您输入任何数据。您不想让它输出任何东西吗?然后使用2> /dev/null
wingedsubmariner 2013年

Answers:


51

您缺少的是将证书主题包含在-subj标志中。与创建配置文件相比,我更喜欢这样做,因为它更易于集成到工作流中,并且不需要事后清理。

一步密钥和csr生成:

openssl req -new -newkey rsa:4096 -nodes \
    -keyout www.example.com.key -out www.example.com.csr \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com"

一步自签名无密码证书生成:

openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" \
    -keyout www.example.com.key  -out www.example.com.cert

这些命令都不提示输入任何数据。

在超级用户上查看我对这个几乎相同的问题的答案。


好吧,这是一个不错的解决方案。使代码更小。谢谢:D
TheNiceGuy 2013年

1
我没有修改他的原始配置文件,因为我认为它可以代替更复杂的证书。某些无法用-subj参数表示的配置,尤其是当您使用v3扩展名和subjectAltName参数时。
robbat2 2013年

1
您还可以使用-batch(非交互式模式)
Eran H.

请注意,第一个命令似乎要求密钥存在才能执行,而第二个命令会自动创建密钥和证书,因为这-subj是基本的有效在线CSR。
dragon788

@ dragon788感谢您指出这一点。我修好了它。
巴哈马

1

您要查找的命令是:

openssl req -new -x509 -config openssl.cnf -nodes -days 7300 -key server.key -out /etc/ssl/private/pure-ftpd.pem

版本变更:

  • -new 需要生成任何东西
  • -key 代替 -signkey
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.