问题标签 [smime]

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 投票
1 回答
14519 浏览

openssl - 使用 openssl smime 加密大文件

我已经在我的系统中生成了一个本地证书,我正在尝试通过 smime 加密一个文件。但是当我运行命令时它给了我错误Unable to load certificate Expecting trusted certificate Error 1024。这是我正在尝试运行的脚本

Test.pem是我的公钥。谁能告诉我如何绕过此部分并生成文件。提前致谢。

0 投票
1 回答
2759 浏览

email - 多个收件人的 SMIME 解密

我想在 JAVA 中开发一个基于 SMIME 的应用程序。这些是我需要对 SMIME 加密/解密进行更多说明的某些领域。我了解在单个收件人的情况下如何加密和解密消息。

如果只有一个收件人

  • 用于加密消息内容的随机生成的会话密钥。
  • 然后这个随机会话密钥将使用接收者的公钥加密,然后发送 SMIME 消息。
  • 加密的消息将使用接收方的私钥解密,并在接收方检索用于加密消息的会话密钥。

如果那里有多个收件人,那么

  • 用于加密消息内容的随机生成的会话密钥。
  • 如果一条消息被发送给多个收件人,对称密钥将由每个收件人的公钥分别加密。封装的消息和所有加密的对称密钥使用 PKCS#7 格式打包在一起。
  • 然后这个随机会话密钥将使用每个接收者的公钥加密,然后发送 SMIME 消息。

如果多个接收者加密的会话密钥带有相同的消息,

  • 接收端的解密是如何完成的?
  • 接收方是否迭代所有加密的会话密钥并尝试解密会话密钥?
  • 如果有 50 个接收者,那么接收者是否需要解密所有接收者的加密文本以获得会话密钥?

谁能帮我找到任何有用的资源或为我的问题提供答案?

0 投票
1 回答
1477 浏览

java - 如何使用带有充气城堡的随机密钥加密电子邮件

我正在使用 bouncy-castle 来实现 SMIME(公钥加密)。要将加密的电子邮件发送给多个收件人,我选择了这种方法

  1. 使用随机密钥加密电子邮件

  2. 使用每个收件人的公钥加密随机密钥并将其设置为 MIME 消息。如果电子邮件中有三个收件人,则该对象将具有三个加密的随机密钥。

  3. 接收者将识别合适的加密随机密钥,使用他们的私钥对其进行解密,并在随机密钥的帮助下解密内容。

我应该使用什么 bouncy-castle 类来加密带有随机字符串的消息。我知道下面的代码可用于使用收件人的证书加密消息。

有人可以向我发布在弹性城堡中使用随机密钥加密 MimeMessage 的代码吗?

0 投票
1 回答
1128 浏览

c - CMS (PKCS#7) RecipientInfo

I am actually working on a function which should extract RecipientInfo from PKCS7 mime encrypted message. The reason why I want to do this is, that I want to get all mail addresses (or at least the keyids/fingerprints) the message is encrypted for.

Well - I tried something out and created something like this (indata is a *.p7m attachment content, indata_len the strlen of indata):

I get no error (checked with ERR_get_error()) but keyid, issuer and sno stay "null", output of above code is:

Key: (null)

So my question is, is it even possible to get that information of an encrypted message or is there just an error in reasoning on my side?

If it is possible to get that data, can someone give me a hint? If it is not possible, whats the default (best) way to check which private key to use for decryption. Since there can be more than one S/Mime certificate/key for a single user. E.g. creating new key since the old one is lost or just get a new cert/key combination from provider, ... Imho, looping through all keys could take some time if the message is really big.

Best regards, Max

0 投票
5 回答
7795 浏览

c# - EWS:从签名的电子邮件中检索附件

我有一个 C# 程序,它通过检索附件并将电子邮件分类到子文件夹来管理资源邮箱。最近出现了一个问题,客户希望向我们发送签名的电子邮件,因此当程序检索他们的附件时,会保存一个名为“smime.p7m”的文件而不是文件附件。在 Outlook 中查看电子邮件时,该文件不存在,只有我们想要的附件。但是,在单步执行代码时,Email 对象中列出的附件仅包含此.p7m文件。

我已经从电子邮件中检索了 mime 内容,但它只是字节。当我在文本编辑器中查看 .p7m 文件时,我在底部文件中看到了我想要的文件的内容(终极挑逗)!如何在无需解析 .p7m 文件的感兴趣内容的情况下获取原始附件?

交换服务器是 2010 SP2,这一切都是通过使用 EWS 托管 API 的 C# 程序发生的。

0 投票
1 回答
1580 浏览

java - 在 Java 中读取 OpenSSL 生成的 PEM/DER 格式的 S/MIME 消息

我需要能够在 Java 中读取从 OpenSSL 生成的 S/MIME 文件。openssl 命令看起来像

这会创建一个看起来像的文件

我目前正在使用 BouncyCastle 尝试读取 test_out.pem,

但我无法弄清楚如何让它接受没有 MIME 标头的消息,因为我收到以下错误:

读取这样的 PEM(或 DER)格式文件并能够使用 java.security.PrivateKey 对其进行解密的最佳方法是什么?

0 投票
1 回答
3035 浏览

c# - 解密电子邮件时 Mimekit 导致错误数据

我有一个创建加密电子邮件的电子邮件应用程序。它在 Outlook 中运行良好,并且我发送电子邮件的所有电子邮件交易对手都没有报告任何问题。但是,当我尝试使用 Mimekit 解密它们时,我得到一个“坏数据”异常。

一些堆栈跟踪:

我的电子邮件 mime 如下所示:

这就是我执行加密的方式:

这就是我尝试解密的方式:

当我直接使用封装的 cms 自己解密内容时,没有问题。

这是我自己解密后的邮件:

谁能看到是什么原因造成的?

在使用了 jstedfast 提出的 DummySecureMimeContext 之后,它就可以工作了。可以在这里找到更彻底的演练:https ://github.com/jstedfast/MimeKit/issues/38

0 投票
0 回答
2751 浏览

java - 使用 openssl 进行 SMIME 加密,使用 java bouncy castle 解密失败

嗨,我有一个应用程序,我在其中生成密钥对和 x509 证书,然后我使用公钥 (key.pem) 并使用 openssl 将我的数据加密为 smime 格式,如图所示。

加密文件看起来像

在此之后,我将其作为 serverTokenBytes 的输入作为我的应用程序的输入,它尝试使用此逻辑对其进行解密。

出于某种原因,这不起作用,我返回一个空字符串而没有此代码中提到的错误。

我想知道 1. 用 openssl 加密和用 java bouncy castle 解密。这个可以吗 ?

  1. 解密没有失败,只是给了我一个空字符串,有人看到这段代码有什么问题吗?

+++++++++++++++更新1 +++++++++++++++**

好吧,在调试时,我看到数据已正确解密并附加到 MimeBodyPart 的标头,但随后情况变糟,如下所示。

我已经缩小到导致问题的这段代码。

公共 MimeBodyPart(InputStream 是)抛出 MessagingException {

并且 ASCIIUtility getBytes 返回 []

大小 = is.available(); 总是返回 0;

+++++++++++++++更新2 +++++++++++++++++** 我现在使用java的BC作为提供者生成了另一个加密消息。这两者创建的加密消息之间的差异在标头方面是这样的。

充气城堡生成加密消息:

......

openssl 生成的加密消息头。

……

openssl 生成的加密消息在传递到最终的 MimeBodyPart res = SMIMEUtil.toMimeBodyPart(...content...) 时会导致 MimeBodyPart 标头的设置与通过相同 api 传递时充气城堡生成的消息不同。

0 投票
2 回答
1149 浏览

macos - 如何使用 openssl 验证 s/mime 签名

如何使用 OpenSSL 验证 s/mime 签名。通过命令行我们可以验证:

openssl smime -verifyMac OSX 上的等效命令方法是什么?

0 投票
1 回答
6022 浏览

c# - C#,无法将 .p7b 证书导入 Windows 商店

我正在尝试将扩展名为 .p7b 的证书(smime)导入 Windows 商店。

这是当前代码

它给了我一个“找不到原始签名者”的错误。

备注:此代码适用于 .cer 扩展名(DER 和 Base 64)。

有人请帮助确定可能的根子句吗?

谢谢。

PS。VS2010、Windows Server 2008 R2

Edit1:test_public_cert.p7b 是通过 mmc 控制台从另一台服务器上的公钥导出的。