98 prompt openssl ssl-certificate x509
我正在使用以下代码生成密钥:
apt-get -qq -y install openssl;
mkdir -p /etc/apache2/ssl;
openssl genrsa -des3 -out server.key 1024;
openssl req -new -key server.key -out server.csr;
cp server.key server.key.org;
openssl rsa -in server.key.org -out server.key;
openssl x509 -req -days 12000 -in server.csr -signkey server.key -out server.crt;
mv server.crt /etc/apache2/ssl/cert.pem;
mv server.key /etc/apache2/ssl/cert.key;
rm -f server.key.orig;
rm -f server.csr
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
如何跳过密码提示?我这样做是否相当安全?(因为它不应该是彻头彻尾的愚蠢,因为任何人都应该能够破解证书)
如何避免提示输入国家/地区名称、组织等。我希望我可以在命令提示符下提供它们(手册页仅显示 OpenSSL 的顶级选项)
bah*_*mat 167
编辑:这是迄今为止我最受欢迎的答案,现在已经有几年了,所以我添加了一个 ECDSA 变体。如果您可以使用 ECDSA,则应该使用。
您可以在命令行上提供所有这些信息。
一步自签名无密码证书生成:
RSA 版本
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
Run Code Online (Sandbox Code Playgroud)
ECDSA版本
openssl req \
-new \
-newkey ec \
-pkeyopt ec_paramgen_curve:prime256v1 \
-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
Run Code Online (Sandbox Code Playgroud)
所有 openssl 子命令都有自己的手册页。见man req
。
专门解决您的问题,并更明确地说明哪些选项有效:
该-nodes
标志表示不加密密钥,因此您不需要密码。您也可以使用-passout arg
标志。有关如何格式化 arg 的信息PASS PHRASE ARGUMENTS
,请参见openssl(1)
手册页。
使用该-subj
标志,您可以指定主题(示例如上)。
接受的答案需要一些小的更正。欧共体线路:
-newkey ec
-pkeyopt ec_paramgen_curve:prime256v1
Run Code Online (Sandbox Code Playgroud)
应该:
-newkey ec \
-pkeyopt ec_paramgen_curve:prime256v1 \
Run Code Online (Sandbox Code Playgroud)
在 MacOS 上 - 通过 brew 安装的 OpenSSL 1.0.2f 我验证了接受的答案,如下所述
列出可用的椭圆曲线:
$ openssl ecparam -list_curves
Run Code Online (Sandbox Code Playgroud)生成密钥文件:
$ openssl ecparam -name secp256k1 -out secp256k1.pem
Run Code Online (Sandbox Code Playgroud)要在没有密码提示的情况下生成证书:
openssl req \
-new \
-newkey ec:secp256k1.pem \
-days 365 \
-nodes \
-x509 \
-subj "/C=US/ST=FL/L=Ocala/O=Home/CN=example.com" \
-keyout server.key \
-out server.crt
Run Code Online (Sandbox Code Playgroud)查看证书:
$ openssl x509 -noout -text -in server.crt
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
108432 次 |
最近记录: |