如何通过openssl从x509证书中提取主题密钥标识符

时间:2018-12-22 15:10:06

标签: openssl x509certificate

我已经使用ec prime256v1通过openssl创建了x509证书。 有人可以让我知道使用任何openssl cli从中提取主题密钥标识符的方法吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

以下是其工作方式示例:

openssl x509 -in cer.der -inform DER -text | sed ':a;N;$!ba;s/\n/+/g' | sed 's/ //g' | sed -n 's/.*SubjectKeyIdentifier:+\([A-F0-9:]*\)+.*/\1/p' | sed 's/\://g'

它正在使用sed来获取“主题详细信息级别”。

解释各个部分:

openssl x509 -in cer.der -inform DER -text

下一部分是sed魔术。它正在删除所有新行,并以+代替:

sed ':a;N;$!ba;s/\n/+/g'

下一部分是简单的sed魔术。都是空白:

sed 's/ //g'

下一部分是有趣的部分,并提取主题键标识符。

sed -n 's/.*SubjectKeyIdentifier:+\([A-F0-9:]*\)+.*/\1/p'

最后一部分只是使用sed删除冒号。在您的情况下可能不需要。也许您还需要它作为二进制文件。

sed 's/\://g'

如果需要二进制输出,请在整个命令中添加另一个管道:

openssl x509 -in CERT_S_SM_DPauth_ECDSA_BRP.der -inform DER -text | sed ':a;N;$!ba;s/\n/+/g' | sed 's/ //g' | sed -n 's/.*SubjectKeyIdentifier:+\([A-F0-9:]*\)+.*/\1/p' | sed 's/\://g' | xxd -r -p - subjkid.bin

答案 1 :(得分:0)

只需将-subjectopenssl一起使用,并使用DER选项来指定PEM-inform格式,例如:

$ openssl x509 -inform DER -in myCert.der -noout -subject
subject= /C=IN/ST=Karnataka/L=Banaglore/O=FOO/OU=BAR

$ openssl x509 -inform PEM -in myCert.pem -noout -subject
subject= /C=IN/ST=Karnataka/L=Banaglore/O=FOO/OU=BAR

注意:默认情况下,我们不必指定-inform选项PEM格式