在证书颁发机构的上下文中,我尝试从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?
答案 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 ]
)修复主题字段的顺序