问题标签 [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 投票
2 回答
7820 浏览

https - 电子邮件安全:TLS 和 S/MIME

我的理解是 TLS 是一种允许两个 STMP 服务器安全地相互通信的加密技术。如果使用 HTTPS 连接到 STMP 服务,是否与使用 S/MIME 相同?

0 投票
1 回答
1974 浏览

.net - 带有 .NET 的 OpenSSL S/MIME 签名

对于我正在开发的应用程序,我需要先创建一个签名文件,然后才能上传文件。它的文档解释了如何使用 openssl 执行此操作:

首先你需要准备好你的密钥:

之后,您可以使用以下语法签署任何文件:

这行得通,但如果可以使用本机 .NET 代码来创建签名文件,我宁愿避免运行外部程序来创建签名文件。

我试图在 vb.net 中对此进行编码并得到以下信息:

它制作的文件并不完全符合 openssl 的预期:我仍然需要插入-----BEGIN PKCS7-----and-----END PKCS7-----并添加换行符,以便行不超过 65 个字符。但是,即使这样做了,我以这种方式制作的签名也是无效的,当我使用 openssl 检查时,我收到以下错误:

我想我在某个地方忘记了一个小细节,但我无法弄清楚是什么。

任何人都可以帮助我使该代码正常工作吗?如果没有,请指向具有此类功能的 .NET 库,并可能提供如何执行此操作的示例?

0 投票
1 回答
10161 浏览

openssl - OpenSSL smime 验证失败,证书和签名正确

我收到加密和签名的 smime 消息。解密没问题,数据似乎是正确的。

但是在验证签名阶段我得到了错误。

发送两个证书(CA 证书和客户端证书)应该没问题。

我认为 openssl 可以在解密过程中产生特定的符号,例如换行符或源消息中不存在的其他符号。或者它可以处理非标准算法(至少据我所知openssl有非标准的私钥存储格式)

我使用openssl 0.9.8h。而另一边的smime消息是由“webMethods EDI version 6.5”软件形成的(它是处理EDI消息的AS2服务器)。

这个错误的原因是什么?

您能建议尝试另一种 smime 工具吗?

0 投票
1 回答
3178 浏览

cryptography - OpenSSL 将内容类型为“Application/EDI”的 smime 消息视为文本并更改换行符

我收到内容类型为“应用程序/EDI”的 smime 消息。它是非标准的 mime 类型,内容应解释为二进制。但 OpenSSL 在验证签名期间将其视为文本并将换行符从 '\n' 更改为 '\r\n' (根据内容类型'text'的规范需要)。因此摘要出错,验证失败。

有什么方法可以让 openssl 不更改原始消息中的任何内容?参数 '-binary' 不适用于任何版本(我尝试了 0.9.7、0.9.8、1.0.0)。

0 投票
1 回答
4724 浏览

security - PGP 和 SMIME 的区别

我想知道为什么需要两个安全的电子邮件标准。如果我没有完全错的话,现在 PGP 和 SMIME 基本上提供了或多或少相同的功能。

过去,不同之处在于 PGP 建立在信任网络之上,而 SMIME 始终使用第三方受信任方。但与此同时,我认为您也可以使用 CA 配置 PGP。此外,PGP 旨在仅加密普通邮件消息,而 SMIME 还可以解密附件。但与此同时,我确信 PGP 也可以做到这一点。

所以问题是:这两种协议有什么区别吗?

非常感谢,安德鲁

0 投票
1 回答
1630 浏览

certificate - pkcs7-签名消息

在创建 as/mime 消息时,您在第二部分(第一部分是实际消息)应该提供您签署消息的证书和签名结果,即摘要,您应该如何连接它们?

我不使用任何像充气城堡或类似的图书馆。我正在手动构建消息。你只是应该将它们一个接一个地连接起来,还是在它们之间用一条新线连接起来,或者它是如何完成的?我确实试图看看它在 BC 是如何完成的,并且在没有任何明确答案的情况下进行了一些谷歌搜索。

0 投票
3 回答
26255 浏览

encryption - 使用 OpenSSL 从 SMIME 消息(pkcs7 签名)中提取公共证书

如何使用 OpenSSL 从 smime 消息(pkcs7 签名)中提取公共证书?

0 投票
1 回答
710 浏览

php - 从 MIME 创建 S/MIME?

我不完全理解,一些文档或帮助将不胜感激:)

使用 PHP 我使用 ezcomponents Mail 对象创建了一个 MIME。但我不明白的是:

您是否通过使用openssl_pkcs7_sign对原始 MIME 进行签名来创建 S/MIME 消息?还是您从头开始创建 S/MIME 并在完成后对其进行签名?

当我试图理解正确的做事方式时,请多多包涵。

编辑:找到这段代码来更好地说明我的问题

0 投票
4 回答
2345 浏览

linux - 读取 s/mime 格式的 PKCS7 签名文件失败(大尺寸)

我想验证 s/mime 格式的签名文件,pkcs7 文件大小为 500MB。

openssl smime -verify -in test.pk7 -inform DER

读取 S/MIME 消息时出错 715956256:error:07069041:memory buffer routines:BUF_MEM_grow_clean:malloc failure:buffer.c:152:715956256:error:0D06B041:asn1 encoding routines:ASN1_D2I_READ_BIO:malloc failure:a_d2i_fp.c:229:

内存使用量有限,例如 200MB 是否有可能?

0 投票
3 回答
5526 浏览

java - 为什么我的密钥标识符不匹配?

我正在尝试解密 S/MIME 电子邮件(最初通过 Outlook 发送),为此,我使用了 bouncycastle API。不过,我遇到了障碍。

在 Windows 证书存储中,我有收件人的证书。我之前曾使用它向对方发送签名和加密的电子邮件,而对方又使用它向我发送加密回复。然后,我将证书(带有私钥)导出为 .pfx 文件,并将此 pfx 文件加载到 Java KeyStore 中。但是,它不起作用,我怀疑这是因为主题密钥标识符不匹配。

这是我用来从 KeyStore 获取主题密钥 ID 的代码:

这将打印出以下密钥标识符:

但是,当我检查 Windows 证书存储时,密钥标识符是不同的:

KeyStore 在前面返回额外的 4 个字节(主题密钥标识符应该是密钥的 160 位 SHA1 哈希,因此长度为 20 个字节,对吗?)。

更令人困惑的是,当我使用 bouncycastle API 解析 S/MIME 电子邮件并通过收件人 ( SMIMEEnveloped.getRecipientInfos().getRecipients()) 时,返回的唯一收件人(应该只有一个)具有以下主题密钥标识符:

...它只有两个额外的字节,而不是四个,我认为这就是我无法使用证书解密电子邮件的原因。

为什么这些主题密钥标识符都不匹配?我究竟做错了什么?