从CSR检索发出的证书

时间:2018-06-06 12:36:16

标签: openssl x509certificate ca

在证书颁发机构的上下文中,我尝试从CA index.txt检索有效的实时证书(如果有),以便在从初始CSR更新之前撤消它。

在我的index.txt行中,我正在寻找

V       200605120159Z           D486D9E32C4DE4BA        unknown /C=LU/ST=Luxembourg/L=Luxembourg/O=My Org/OU=My Unit/CN=myhost.fqdn/emailAddress=ca@initech.com

我可以通过

获取CSR中的主题
openssl req -noout -subject -in sub/csr/myhost.csr.pem

得到

subject=C = LU, ST = Luxembourg, L = Luxembourg, O = My Org, OU = My Unit, emailAddress = ca@initech.com, CN = myhost.fqdn

我可以用sed

翻译它
openssl req -noout -subject -in sub/csr/myhost.csr.pem \
| sed -e 's/subject=/\//' -e 's/ = /=/g' -e 's/, /\//g'

但结果

/C=LU/ST=Luxembourg/L=Luxembourg/O=My Org/OU=My Unit/emailAddress=ca@initech.com/CN=myhost.fqdn

index.txt中的行不匹配,因为字段的顺序不同。

是否可以以可比较的方式获得证书的主题和CSR?

1 个答案:

答案 0 :(得分:1)

如果您想修复CSR中的字段顺序,可以尝试使用awk

openssl req -noout -subject -in sub/csr/myhost.csr.pem  | awk -F', ' -v OFS='/' '{sub(/^subject=/,"");gsub(" = ","=");print $1,$2,$4,$5,$7,$6}'

-F', '设置输入字段分隔符,-v OFS='/'设置输出字段分隔符。

第一个sub命令删除subject=字符串,第二个命令gsub挤压=字符周围的空格。

然后打印线。注意第6和第7场的反演。

但最好根据openssl.cnf部分中的openssl配置文件/etc/ssl(通常位于/usr/ssl[ req_distinguished_name ])修复主题字段的顺序