【问题标题】:How to save public key from a certificate in .pem format如何以 .pem 格式保存证书中的公钥
【发布时间】:2024-05-01 13:20:06
【问题描述】:

我正在使用以下 openssl 命令将我的公钥存储到 .pem 文件中。

openssl> x509 -in E:/mycert.pem -pubkey  -out E:/mypubkey.pem

但是当我尝试使用这个命令时,它会将整个证书信息存储在 mypubkey.pem 文件中。

我已经看到我可以使用保存我的公钥

openssl> x509 -pubkey -noout -in cert.pem > pubkey.pem

但是它抛出了一个错误。我不能使用“>”运算符。

【问题讨论】:

    标签: openssl ssl-certificate pem


    【解决方案1】:

    有几种方法可以做到这一点。

    首先,不要进入 openssl 命令提示符模式,只需从 Windows 提示符在一个命令行中输入所有内容:

    E:\> openssl x509 -pubkey -noout -in cert.pem  > pubkey.pem
    

    如果由于某种原因,您必须使用 openssl 命令提示符,只需输入“>”之前的所有内容。然后 OpenSSL 会将公钥信息打印到屏幕上。然后,您可以将其复制并粘贴到名为 pubkey.pem 的文件中。

    openssl> x509 -pubkey -noout -in cert.pem
    

    输出将如下所示:

    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAryQICCl6NZ5gDKrnSztO
    3Hy8PEUcuyvg/ikC+VcIo2SFFSf18a3IMYldIugqqqZCs4/4uVW3sbdLs/6PfgdX
    7O9D22ZiFWHPYA2k2N744MNiCD1UE+tJyllUhSblK48bn+v1oZHCM0nYQ2NqUkvS
    j+hwUU3RiWl7x3D2s9wSdNt7XUtW05a/FXehsPSiJfKvHJJnGOX0BgTvkLnkAOTd
    OrUZ/wK69Dzu4IvrN4vs9Nes8vbwPa/ddZEzGR0cQMt0JBkhk9kU/qwqUseP1QRJ
    5I1jR4g8aYPL/ke9K35PxZWuDp3U0UPAZ3PjFAh+5T+fc7gzCs9dPzSHloruU+gl
    FQIDAQAB
    -----END PUBLIC KEY-----
    

    【讨论】:

    • Ty 回复。第二种方法是可以接受的。但我想通过命令提示符本身保存它。我的系统上没有安装 openssl。我直接使用二进制文件来运行 openssl 命令提示符。我使用的版本是 openssl-0.9.8k_WIN32。所以当我尝试在 Windows 提示符中运行第一个命令时,它显示错误。
    • 您在运行第一个命令时看到了什么错误?您是在此处获得 openssl 版本 -> https://code.google.com/p/openssl-for-windows/ 还是其他地方?
    • 是的,我使用的是相同的 openssl 版本。
    • 您可以使用二进制文件从 Windows 命令行运行,就像我的第一个示例一样。不要运行 openssl.exe(不带参数)来获取 openssl 提示,而是键入 openssl.exe,然后在同一行中输入其他参数,就像我的第一个示例一样。如果你先直接进入openssl提示,你是正确的,当你尝试使用“>”时会出现错误。但如果你把它们都放在同一行,它就会起作用。
    • 谢谢 gtrig :)。我现在得到了输出。
    【解决方案2】:

    如果是 RSA 密钥

    openssl rsa  -pubout -in my_rsa_key.pem
    

    如果您需要 openssh 的格式,请参阅Use RSA private key to generate public key?

    请注意,公钥是从私钥生成的,ssh 使用身份文件(私钥文件)生成公钥并将其发送到服务器,并通过身份文件中的私钥从服务器解密加密的令牌。

    【讨论】:

    • 您可以触摸格式。并且没有回应询问有关预期格式的详细信息。应该是 p1 还是 p12。
    最近更新 更多