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

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

生成 SSL 证书文件阿帕奇,我正在使用以下命令:

 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.cert

我手动给它提供以下参数:

国家名称(2 个字母代码)[AU]:非盟
州或省名称(全名):我的名字
[某些状态]:某个状态
地点名称(例如城市)[]:城市
组织名称(例如公司)[Internet Widgits Pty Ltd]:互联网
组织单位名称(例如部门)[]:部分
通用名称(例如服务器 FQDN 或您的名称)[]:你的名字
电子邮件地址 []:[电子邮件保护]

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

OpenSSL 手册页中没有任何提示。

答案1

您可以创建一个配置文件并在命令中使用它。例如,您可以创建一个名为的配置文件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

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

[ 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

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

答案2

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

[ 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

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

请注意,字段的顺序是可以改变的,并且决定了证书中的顺序。

答案3

它也可以从脚本运行:

#!/bin/bash

country=WORLD   
state=mystate    
locality=Mycity   
organization=myorg    
organizationalunit=IT   
[email protected]

 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout
 /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.cert -subj
 "/C=$country/ST=$state/L=$locality/O=$organization/OU=$organizationalunit/CN=$commonname/emailAddress=$email"

发现于:http://www.jamescoyle.net/how-to/1073-bash-script-to-create-an-ssl-certificate-key-and-request-csr

相关内容