我已经使用ec prime256v1通过openssl创建了x509证书。 有人可以让我知道使用任何openssl cli从中提取主题密钥标识符的方法吗?
谢谢。
答案 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)
只需将-subject
与openssl
一起使用,并使用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
格式