问题标签 [pem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9869 浏览

php - 如何解密以前通过 Crypto++ 加密的 OpenSSL 上的字符串?

编辑:我发现钥匙不是我在评论中所说的问题。我可以毫无问题地使用它们来加密和解密 OpenSSL 上的数据。

但我需要解密之前通过 Crypto++ 加密的 OpenSSL 上的字符串,但它不起作用。

我稍后会发布更多详细信息。

嗨,我已经使用 Crypto++ 生成的 RSA 公钥加密了一个字符串,现在我正在尝试(仍然不成功)通过 PHP 和 OpenSSL 对其进行解密。

这就是我正在做的事情:

  • 非 base64 或十六进制编码的私钥存储在名为“rsa-private.key”的文件中
  • 加密消息存储在“message.txt”中(十六进制编码)

第 1 步:通过以下方式加载私钥:$key = file_get_contents("rsa-private.key");

第 2 步:使用以下函数将密钥转换为 PEM 格式:

(stackoverflow.com/questions/1357569/)

第 3 步:准备密钥以供 OpenSSL 进一步使用:(没有任何问题)

第 4 步:获取消息并使用以下函数解码消息:

第 5 步:解密字符串:(不起作用)

$decrypteddata 始终为空。

我不知道为什么它不起作用。有人注意到我做错了什么吗?

0 投票
2 回答
10662 浏览

php - PHP文件上传不断抛出错误

我正在将 rsa 私钥(.pem 文件)上传到我的网站并使用 fopen 读取内容,但最近我一遍又一遍地遇到同样的错误而没有多大意义。

HTML

上传.php

该网站不断返回错误:

警告:fopen(mykey.pem)[function.fopen]:无法打开流:第 38 行的 .... 中没有此类文件或目录

(这是 fopen 线)。它进入 fopen 状态的事实向我证明它确实上传但使用 fopen (也尝试使用 file_get_contents($_FILES['uploaded_file']['name']); 也未成功)返回错误。

什么大坨!

最后注意事项:

无论出于何种原因, fopen() 不喜欢读取 OpenSSL 证书并返回错误:

openssl_private_decrypt():提供的资源不是有效的 OpenSSL X.509/key 资源

但是,如果您使用 file_get_contents 它可以工作。

0 投票
2 回答
8705 浏览

java - Apache HttpClient 和 PEM 证书文件

我想以编程方式访问需要客户端证书的站点,我在 PEM 文件中拥有该证书。在这个应用程序中,如果可以避免的话,我不想将它们添加到我的密钥库、使用 keytool 或 openssl。我需要直接在代码中处理它们。

我将如何“发送”带有请求的证书?

0 投票
0 回答
860 浏览

php - stream_context_set_option 的奇怪错误

我想连接 ssl 服务器。我附加了带有stream_context_set_option的ssl证书。

但它返回"check that your cafile/capath settings include details of your certificate".

apns-dev.pem 在同一个文件夹中。

如果我在顶部添加,效果很好。我不明白。证书文件的权限是 644

0 投票
2 回答
4302 浏览

c++ - PEM 转换 (PKCS7) 到 DER - AKA Base64 C++ 问题

我刚刚完成了一些 OpenSSL/PKCS7 数字签名代码的编写,现在有了一个可用的 PEM 编码的 PKCS7 文件。因此,经过一番小小的战斗,我需要将该 PEM 转换为 DER 格式。事实证明这比我希望的要艰难。

OpenSSL 中有一些方便的方法,例如“PEM_write_bio_PKCS7_stream”来编写您的 PKCS7 对象。但是经过一些广泛的谷歌搜索和浏览一些头文件后,我似乎找不到任何东西来获取 PKCS7 对象并将其写入 DER 格式的任何东西(BIO、FILE、char*)。

所以感觉被打败了,我转而解析 PEM 文件中的页眉和页脚,并对内容进行 Base64 解码。作为检查,我使用 Java 和 BouncyCastle 完成了这项工作,并得到了我想要的。

这是我的代码。几乎每一个 Base64 解码器我都尝试过这样的事情......

进入...

这是那个代码...

有什么想法吗?

0 投票
2 回答
754728 浏览

x509 - 如何将 .crt 转换为 .pem

如何将 .crt 转换为 .pem?

0 投票
1 回答
239 浏览

python - 为什么 Google 的 PEM 中剩下 40 个字符用于打包 Chrome 扩展

我最近一直试图弄清楚如何让 PyC​​rypto 识别由 Google Chrome 打包过程产生的 PEM。问题是标准的 importKey 方法会导致错误。经过相当长的过程,我终于意识到我可以通过对 DerSequence.decode 方法进行逆向工程来初步模拟导入(所有细节都在这里)。不幸的是,它给我留下了一个未解决的问题。

我可以得到导入的密钥,看起来还算一致,但我还剩下 40 个字符。

有谁知道为什么有这 40 个字符?忽略它们会导致某些私钥/公钥对出现问题吗?

0 投票
2 回答
2581 浏览

c# - 如何获得给定 CSR 的密钥大小?

我正在使用Liping Share ASN1 Editor在 .net(c#) 中编写一个程序,它可以很好地解码给定的 CSR。
所以,我的问题是:如何获得给定 CSR 的位大小?(我想测试它是否为 1024 或更高)
我已经尝试过 .net X509Certificate 类,但它只适用于证书,不适用于 CSR。
不可能使用 Java 类或解析包含 CSR 解码器的网页。(尽管我已经认为这比解决问题要容易得多)

也许解决方案很简单,我就是不明白,但如果有人能给我建议,我将不胜感激!(过去两天谷歌太多了!!)

0 投票
1 回答
10886 浏览

c++ - C++ OpenSSL 导出私钥

到目前为止,我已成功使用 SSL,但遇到了令人困惑的障碍。我生成了一个 RSA 密钥对,之前使用 PEM_write_bio_RSAPrivateKey(...) 来导出它们。然而,手册页声称该格式已过时(实际上它看起来与通常的 PEM 格式不同)。相反,它推荐 PEM_write_bio_PKCS8PrivateKey(...)。

但是 PEM_write_bio_PKCS8PrivateKey 接受 EVP_PKEY 对象。如何将我的 RSA* 密钥对转换为 EVP_PKEY* 结构以便在该函数中使用?

ret 始终为 0。使用较旧的 PEM_write_bio_RSAPrivateKey 对我有用。我希望导出我的密钥,使它们看起来像:

谢谢。

0 投票
2 回答
1734 浏览

c# - 从字符串加载 .Net 中的 Jira 公共证书(如何在 .Net 中将 ASN.1 编码的 SubjectPublicKeyInfo 转换为 X509 Cert)

我正在构建一个 oauth 1.0a 服务,该服务将由 Jira 中的小工具使用,它是一个用 C# 编写的 .Net 3.5 应用程序。

Jira 使用 RSA-SHA1 签名方法向该服务发出请求,这意味着验证请求的签名我需要从他们的公共证书创建一个 X509Certificate 实例。

在 Jira 应用程序中,您可以通过转到消费者信息屏幕(其中还有 Jira 等的消费者密钥)来获取公共证书,它以这种格式显示公共密钥:

查看生成此密钥的 Jira 代码,我可以看到它(据说)是 PEM 编码的,没有 BEGIN/END 证书页眉/页脚。

RSAKeys 是一个开源类,可以在这里找到:

https://studio.atlassian.com/source/browse/OAUTH/trunk/api/src/main/java/com/atlassian/oauth/util/RSAKeys.java?r=HEAD

我希望将此公共证书(密钥)加载到 .Net 中的 X509Certificate 实例中,但到目前为止我的尝试都失败了。这是我的代码:

但是在最后一行代码中,我抛出了一个异常:

我很确定我错过了一些基本的东西,但我能想到它是什么。

更新

好的,经过进一步调查,这似乎是公钥的 SubjectPublicKeyInfo 序列化,所以它是 ASN.1,base 64 编码(162 字节未编码),这是 Java 使用 java.security.PublicKey.getEncoded() 的默认输出.

因此,鉴于所有这些 - 是否有任何简单的方法来创建包装此公钥的 X509Certificate2 实例 - 或者除了公钥之外还需要额外的元数据来创建 x509Certificate2 实例?