如何使用 OpenSSL 自动读取证书信息

AJN*_*AJN 3 openssl apache-2.4 ubuntu-14.04

要为Apache生成 SSL 证书文件,我使用以下命令:

 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.cert
Run Code Online (Sandbox Code Playgroud)

我用这些参数手动输入它:

Country Name(2 个字母代码)[AU]:AU
州或省名称(全名):Myname
[Some-State]:Some-State 地区
名称(例如,城市)[]:城市
组织名称(例如,公司)[互联网Widgits私人有限公司]:互联网
组织单位名称(例如,部分)[]:
通用名称(如服务器FQDN或您的姓名)[]:提供yourname
电子邮件地址[]:email@gmail.com

是否可以使用选项从文件或直接从 OpenSSL 命令行输入它们?

OpenSSL 手册页中没有提示。

Tho*_*chy 6

您可以创建一个配置文件并在您的命令中使用它。例如,您可以创建一个名为的配置文件openssl.cnf并像这样使用它:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.cert -config ./openssl.cnf
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您可以设置以下参数:

[ req_distinguished_name ]
# Variable name             Prompt string
#-------------------------    ----------------------------------
0.organizationName          = Organization Name (company)
organizationalUnitName          = Organizational Unit Name (department, division)
emailAddress                = Email Address
emailAddress_max            = 40
localityName                = Locality Name (city, district)
stateOrProvinceName         = State or Province Name (full name)
countryName             = Country Name (2 letter code)
countryName_min             = 2
countryName_max             = 2
commonName              = Common Name (hostname, IP, or your name)
commonName_max              = 64
Run Code Online (Sandbox Code Playgroud)

更多信息请访问 http://www.flatmtn.com/article/setting-openssl-create-certificates#SSLCert-4

  • `-batch` 非交互模式 (3认同)

gar*_*Red 6

在您的配置文件中的某处,您需要以下内容:

[ req ]
prompt                 = no
distinguished_name     = req_distinguished_name

[ req_distinguished_name ]
countryName             = GB
stateOrProvinceName     = Provinceshire
localityName            = Locationsville
organizationName        = Example Ltd
organizationalUnitName  = PKI
commonName              = www.example.com
Run Code Online (Sandbox Code Playgroud)

prompt = no[ req ]部分停止你看到的提示和改变预期在格式distinguished_name部分。如果您没有此选项,OpenSSL 将期望您当前拥有的提示格式。

请注意,字段的顺序是可变的,并规定了证书中的顺序。