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

如何通过openssl从x509证书中提取主题密钥标识符,openssl,x509certificate,Openssl,X509certificate,我已经使用ec prime256v1 openssl创建了一个x509证书。 有人能告诉我使用任何openssl cli从中提取主题密钥标识符的方法吗 提前感谢。以下是它的工作原理示例: opensslx509-in cer.der-inform der-text | sed:a;N、 美元!文学士;s/\n/+/g'| sed's///g'| sed-n's/*SubjectKeyIdentifier:+\([A-F0-9:]*\)+./\1/p'| sed's/\://g' 它使用sed获

我已经使用ec prime256v1 openssl创建了一个x509证书。 有人能告诉我使用任何openssl cli从中提取主题密钥标识符的方法吗


提前感谢。

以下是它的工作原理示例:

opensslx509-in cer.der-inform der-text | sed:a;N、 美元!文学士;s/\n/+/g'| sed's///g'| sed-n's/*SubjectKeyIdentifier:+\([A-F0-9:]*\)+./\1/p'| sed's/\://g'
它使用
sed
获取主题详细程度

解释各个部分:

openssl x509-在cer.der中-通知der-文本
下一部分是
sed
magic。它正在删除所有新行,并将其替换为
+

sed:a;N、 美元!文学士;s/\n/+/g'
下一部分是一个简单的
sed
magic。全是空白:

sed's///g'
下一部分是有趣的部分,提取主题密钥标识符

sed-n的/*SubjectKeyIdentifier:+\([A-F0-9::*\)+./\1/p'
最后一部分只是使用
sed
删除冒号。你的情况可能不需要。也许你也需要它作为二进制文件

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

opensslx509-in CERT_S_SM_DPauth_ECDSA_BRP.der-inform der-text | sed:a;N、 美元!文学士;s/\n/+/g'| sed's///g'| sed-n's/*SubjectKeyIdentifier:+\([A-F0-9:]*\)+.*/\1/p'| sed's/\://g'| xxd-r-p-subjectkid.bin

可以简单地将
-subject
选项与
openssl
一起使用,并指定
DER
PEM
格式使用
-通知
选项,例如:

$ 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
格式

您要读取证书中的字段还是要读取与所用密钥对应的使用者密钥标识符?我要读取证书。我可以使用grep-A1“使用者密钥标识符”捕获它ca-cert.pem然而,我想知道,如果我可以通过openssl命令行提取它,你肯定不能,除非使用诸如grep或awk之类的东西。