openssl - 从 CSR 检索颁发的证书
问题描述
在证书颁发机构的上下文中,我正在尝试从 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 的主题?
解决方案
如果要修复 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 配置文件openssl.cnf
(通常位于/etc/ssl
or/usr/ssl
中)固定主题字段的顺序[ req_distinguished_name ]
。
推荐阅读
- vuejs2 - 在 vue 中延迟组件的渲染
- javascript - 如何在侧面嵌套数组猫鼬中定义对象数组
- php - 我在 Laravel 中的 JSON 响应中的重复值
- html - 当我在 CSS 中定义较小的尺寸时,标题中的徽标图像没有改变尺寸
- python - 如何使用自定义用户模型和自定义注销视图从 Django 注销?
- android - 如何解决cordova firebase插件错误?
- java - 如何将值发送到 postgres 函数?
- linkedin-api - 如何为具有 r_basicprofile (#linkedin) 的应用添加“使用 LinkedIn 登录”产品
- vue.js - 基于路由动态导入组件
- python - 如何将带有空格的字符串作为关键字参数传递?