我有一个由 openssl 生成的 .pem 私钥。如何从中提取密钥 ID?
编辑:生成的 rsa 密钥对适用于 Amazon cloudfront。在控制台上上传时,会显示“密钥 ID”。但是,我生成的私钥不适用于我的帐户,并且我没有任何可用于在我的 AWS 帐户上上传公钥的空间(公钥数量限制为 2 个)。
答案1
裸钥匙没有“钥匙 ID”。它们只是一串数字。
如果密钥属于 X.509 证书,则将使用该证书的指纹(DER编码证书的SHA-1哈希值)进行识别:openssl x509 -outform der | openssl sha1
, 或openssl x509 -noout -fingerprint
。
否则(如果它只是一对裸公钥/私钥),则民众有时也会使用 key(同样是 DER 编码),但我不知道它有什么标准。您可以使用 提取公钥openssl rsar -pubout -outform der
,然后再次通过管道传输到(openssl sha1
如果您的程序需要的话)。
CloudFront 使用的“密钥对 ID”是数据库条目使用该密钥。同一个密钥,上传两次,将有不同的 ID;我刚刚测试过。
答案2
亚马逊现在提供了在任何服务器(不仅仅是在 EC2 中运行的服务器)上执行此类操作的工具。在任何 Ubuntu 计算机上,您都可以使用以下命令安装这些工具apt-get
:
$ sudo apt-get install ec2-ami-tools ec2-api-tools
以下是获取指纹的语法My.pem
:
$ ec2-fingerprint-key My.pem
62:44:56:f7:91:f2:8b:9b:44:7c:17:0e:39:c7:34:68:f5:b2:3c:57
由于ec2-fingerprint-key
输入起来有点长,所以有一个等效的快捷方式ec2fp
:
$ ec2fp My.pem
62:44:56:f7:91:f2:8b:9b:44:7c:17:0e:39:c7:34:68:f5:b2:3c:57
答案3
使用以下命令获取 KID/指纹
openssl x509 -in <certificate_file> -fingerprint -noout|cut -f2 -d '='| tr -d ':'
答案4
孩子确实有一个标准,但有些选择权留给了客户,这就是为什么客户有责任维护它https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.2