当我知道域名时,如何自动生成自签名证书?
这有效,但它会在命令行上提示我一些问题。
我应该如何改变它来忽略问题并自动inputFQDN?
#! /bin/bash echo 01 > ca.srl openssl genrsa -des3 -out ca-key.pem openssl req -new -x509 -days 365 -key ca-key.pem -out ca.pem openssl genrsa -des3 -out server-key.pem openssl req -new -key server-key.pem -out server.csr openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -out server-cert.pem openssl genrsa -des3 -out client-key.pem openssl req -new -key client-key.pem -out client.csr echo extendedKeyUsage = clientAuth > extfile.cnf openssl x509 -req -days 365 -in client.csr -CA ca.pem -CAkey ca-key.pem -out client-cert.pem -extfile extfile.cnf openssl rsa -in server-key.pem -out server-key.pem openssl rsa -in client-key.pem -out client-key.pem
谢谢,我笑了。 如果您知道要创build多个证书,请设置一个专用CA.
但是,如果你坚持,创build一个自签名证书只是一条线。
openssl req -newkey rsa:4096 -x509 -extensions x509_ca -keyout $HOME/ca.key -out $HOME/ca-$(date +%Y%m%d-%H%M).crt -days 3654
假设你已经正确地预置了openssl.conf。
您将需要通过环境variables传递subjectAltName值,但是,它们不能在命令行中指定。
即:
SSLSAN="email:copy,DNS:www.example.org" openssl req …
在openssl.conf中:
# Global: SSLSAN = email:copy … [req] subjectAltName = ${ENV::SSLSAN} … [ org1_policy ] subjectAltName = optional
哇,这比你需要的多得多。 这就是我所做的:
openssl genrsa -out /etc/ssl/private/${name}.pem 2048 openssl req -new -key /etc/ssl/private/${name}.pem -subj /CN=${name}/ -out /etc/ssl/${name}.csr openssl x509 -req -days 3650 -in /etc/ssl/${name}.csr -signkey /etc/ssl/private/${name}.pem -out /etc/ssl/certs/${name}.pem
我认为这样做的方法是为您的CA创build一个单独的目录。 将您的CA签名证书放在那里,并创build大部分预填充属性(即O,OU,DC,Alternative Subject等)的configuration文件。 然后在命令行上生成一个提供所需configuration文件名称和FQDN的证书。
我没有一个例子,但你可以在OpenSSL文档中find更多的细节。