X.509:私钥/公钥

Posted

技术标签:

【中文标题】X.509:私钥/公钥【英文标题】:X.509: Private / Public Key 【发布时间】:2013-05-05 01:18:42 【问题描述】:

我们正在尝试从我们的一个合作伙伴那里实现 Web 服务的某些功能。现在,正在传输的内容应该使用我们必须提供的公钥加密。

安全规范规定公共证书必须是 X.509 标准。 X.509 不依赖于私钥/公钥方法吗?因为我只得到一个 .pem 文件,其中包含一个私钥和一个证书,但没有公钥,使用以下命令:

openssl req -new -x509 -days 365 -nodes -out ./cert.pem -keyout ./cert.pem

我是否必须修改命令才能创建私钥和公钥?

【问题讨论】:

【参考方案1】:

公钥存储在 x.509 证书中。 证书将身份信息(通用名称、地址等)绑定到此公钥。

【讨论】:

嗯,在我的例子中,有一个 BEGIN CERTIFICATE 和一个 BEGIN PRIVATE KEY。证书是我的公钥吗?我可以将这两个拆分成单独的文件,这样对方就看不到私钥了吗? 是的,CERTIFICATE 部分是证书(base64 编码,带有公钥),PRIVATE KEY - 是,doh,私钥。您可以(并且实际上应该)将它们分开并仅将证书部分发送给另一方。 好的,非常感谢。然后我会将证书部分发送给他们 :) 我想投票,但显然我达到了我的每日投票上限:O【参考方案2】:

使用 OpenSSL 生成私钥和公钥的基本命令行步骤如下

openssl genrsa -out private.key 1024
openssl req -new -x509 -key private.key -out publickey.cer -days 365
openssl pkcs12 -export -out public_privatekey.pfx -inkey private.key -in publickey.cer

第 1 步 - 生成私钥

第 2 步 - 创建一个 X509 证书(.cer 文件),其中包含您在注册私有应用程序(或升级到合作伙伴应用程序)时上传的公钥。

第 3 步 – 将您的 x509 证书和私钥导出到 pfx 文件。如果您选择的包装库使用 .pem 文件来签署请求,则不需要此步骤。

希望对您有所帮助! This answer explains 不同的文件扩展名。

【讨论】:

我不太确定第三个命令的作用,但它似乎与 privatekey.pem 和 publickey.cer 配合得很好。谢谢! 在这个例子中,privatekey.pem 是只包含私钥还是包含公钥? 您在第一个命令中使用了错误的文件扩展名。您应该使用.key 而不是.pem,以避免混淆。生成的文件将只是一个私钥。有人可能会错误地将.pem 文件发送给其他人,从而造成安全问题。 我花了很多时间阅读文章和帖子,试图生成一个 .PFX 文件,以便我可以将它用于 SAML 单点登录。您的第二行代码是灵丹妙药-我还没有看到有人提到使用 -x509 参数。每个人都有它生成 CSR,在这种情况下我不需要我的证书签名。 对于其他用户:如果配置有错误,请关注:***.com/questions/7360602/…【参考方案3】:

创建一个私钥-公钥对。

openssl req -x509 -newkey rsa:2048 -keyout private.key -out public.cert -days 365

或者,将这对组合成一个文件。

openssl pkcs12 -export -inkey private.key -in public.cert -out certificate.pfx

这会产生以下文件。

private.key
certificate.pfx
public.cert

另见

https://www.openssl.org/docs/manmaster/apps/req.html https://www.openssl.org/docs/manmaster/apps/pkcs12.html https://serverfault.com/questions/9708/what-is-a-pem-file-and-how-does-it-differ-from-other-openssl-generated-key-file

【讨论】:

以上是关于X.509:私钥/公钥的主要内容,如果未能解决你的问题,请参考以下文章

将私钥与 .net 中的 X509Certificate2 类关联

SSL中,公钥,私钥,证书的后缀名都是些什么

如何在 GoLang 中分离编组的 ecdsa 公钥和私钥

[信息安全] 05 X.509 公钥证书的格式标准

X509Certificate2类怎样导入一个公钥字符串

从 X.509 证书中提取 PEM 公钥