如何通过OpenSSL命令行打印证书EKU字段的原始OID值
查看X509证书扩展密钥用法(EKU)原始数字OID的纯命令行实现
OpenSSL的x509 -text输出逻辑中,对所有录入内置OID映射表的扩展项,会强制渲染为易读友好名称,目前所有稳定版本都没有提供-certopt相关开关切换到原始数字OID输出,这是调整所有-certopt参数都无法得到预期结果的核心原因。
直接使用以下跨平台纯OpenSSL命令即可实现需求,无需编写代码、无需安装额外依赖:
openssl x509 -in certificate.crt -ext extendedKeyUsage -outform DER | openssl asn1parse -inform DER -i
结果解读
命令输出中所有标记为OID的行,尾部的点分数字串就是对应EKU项的原始OID,全程不会触发友好名称替换。例如包含微软智能卡登录EKU的证书,会直接打印OID : 1.3.6.1.4.1.311.20.2.2,不会显示为Microsoft Smartcard Login这类易读名称。
环境适配可选方案
- Windows系统可直接使用原生自带的
certutil工具,输出默认同时展示EKU友好名和对应数字OID:certutil -dump certificate.crt - Linux系统安装
nss-tools包后,可使用certutil直接读取证书内容,无需管道解析ASN.1结构:certutil -L -a -i certificate.crt
提示:如果需要批量提取OID,可在上述OpenSSL管道命令后追加
grep OID | awk '{print $NF}'直接过滤得到纯OID列表。
内容的提问来源于stack exchange,提问作者Rzdhop
相关产品推荐
相关产品推荐

