问题标签 [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 回答
1163 浏览

powershell - 向 BizTalk 发送 S/Mime 消息 - 但 Biztalk 无法对其进行解码

我正在尝试向 BizTalk 发送 S/Mime 消息,但它似乎无法接收。

我可以使用 BizTalk 证书和 System.Security.Cryptography.Pkcs 类从我的代码中加密和解密消息(我在 Powershell 中工作作为概念证明)。但是,当我尝试将其直接传递给 BizTalk 时,我会看到以下消息:

如果我在 BizTalk 中执行此操作,我可以创建一条正确使用的消息(当然,对人类和野兽都没有用)并且发现该消息的格式如下:

但是,当我使用我的 PowerShell 脚本重新创建相同的模式时,会出现上述异常。如果我发送在 BizTalk 中创建的工作消息的确切文字,它似乎可以正常工作,这意味着我在其他地方的编码存在问题,但是因为我已经从工作消息中复制了所有标题以在非工作消息中使用那些(除了我添加了一个新的 Content-Id )我发现很难理解 BizTalk 失败的区别是什么。

示例消息如下所示:

我想知道Powershell是否有可能以某种方式对文本进行了错误的编码-使用ASCII而不是Unicode或其他东西-但这似乎有点脆弱,并且使BizTalk看起来难以置信的脆弱。

我用来加密消息的代码是这样的:

为了把它变成一个 S/Mime 消息,我做了一些非常类似的事情,在一个heredoc 类型字符串的标题前面加上最后的加密文本,如上面的消息所示。为了便于阅读,我将它们放入 72 个字符块中,这与 BizTalk 所做的相同,并且在通过 PowerShell 运行时不会影响解密。

欢迎任何关于我需要做什么才能使这些请求正常工作的想法。

0 投票
1 回答
1311 浏览

c# - 以编程方式生成的数字签名电子邮件在 Outlook 中显示正确,但在 Gmail 中显示不正确

我正在使用 C#、.NET 4.0 发送经过数字签名的电子邮件,如下所示:

请注意,message.Body它留空,只有 AlternateView 被添加到电子邮件中。当我发送这封电子邮件并在 Outlook 中查看它时,它会完美显示,在电子邮件消息上带有一个证书图标,并且 S/MIME Outlook 扩展程序会成功并自动验证签名。

王牌。

(如果我向 中添加任何内容message.Body,它就会中断。Outlook 不再将其识别为已签名的电子邮件,我只看到message.Body文本,而不是 AlternateView。)

但是,如果我将这封电子邮件发送到 Gmail 地址,例如,它会显示为带有 smime.p7m 作为附件的空白电子邮件,并且在其中我看到了电子邮件的文本,但它被看起来像一吨的东西包围二进制乱码。

有没有办法让这个数字签名的电子邮件与 Outlook 客户端和 Gmail 网络客户端兼容?

0 投票
1 回答
2287 浏览

python - M2Crypto:从不透明签名的 S/MIME (pkcs7-mime) 中提取消息

我从不透明的签名 S/MIME 消息中提取消息数据时遇到问题,例如:

这实际上是由来自demo/smime/sign test.py 的 M2Crypto (0.21.1)函数生成的不透明 S/MIME 签名(未加密)消息opaque.p7 。数据显然包含消息,例如可以通过以下方式显示:。openssl smime -verify -noverify -in opaque.p7

不幸的是,当我想通过以下方式获取数据时:

不幸的是,dataNone。这只是不透明 S/MIME 变体的问题,因为clear.p7.

我想这可能是一些兼容性问题,我的 OpenSSL 版本是 1.0.1e (Debian Wheezy)。我想知道是否有人让它工作。

更新

这是修改后的 test.py 的输出(此处为原始),以证明对于清晰和不透明的 S/MIME 消息,M2Crypto 正确提取签名者证书,但不从不透明的 SMIME 中提取数据:

test.py 已修补,因为它在许多地方都失败了..

client.pem 包含过期的证书,所以它使用自签名的 client_.pem,它是由生成的openssl req -new -x509 -newkey rsa -nodes -keyout client_.pem -out client_.pem

(请注意,测试加载和验证不透明测试用例假装成功,因为验证步骤已更改为针对原始已知文本进行验证)

0 投票
1 回答
744 浏览

c# - 发送多部分/签名电子邮件c#

我正在尝试按照 RFC1847 协议创建一个多部分/签名的 mime 电子邮件。这是它应该看起来的样子(部分签名被删除):

我无法弄清楚如何实际将其作为电子邮件发送。我正在使用 MailMessage 并尝试按如下方式添加它:

但是它不起作用。MailMessage 添加不同的标题并将其全部搞砸。

我怎样才能正确发送这个?

0 投票
2 回答
159 浏览

des - DES算法标识符

有人可以给我一个权威的参考,说明1.3.14.3.2.7是 S/MIME 中使用的 DES 算法标识符吗?我通过发送 DES 加密的电子邮件并查看电子邮件的 P7M 文件来计算数字。

0 投票
1 回答
198 浏览

smime - S/MIME 还能被认为是安全的吗?

最近一直在讨论秘密服务机构是否可以访问认证机构。在此之前,一些 CA 面临着被黑客攻击的安全问题。

鉴于此,我想知道 S/MIME 是否仍然可以被认为是安全的,因为相同的 CA 会生成私钥。

0 投票
2 回答
4323 浏览

php - 从 php 中的 PKCS7 签名中提取证书

我需要从 pkcs7 签名文件中提取用户证书。我可以使用以下命令通过命令行执行此操作:

这将为我提供整个证书链,我可以处理生成的文件以提取我想要的内容。

有没有办法用 openssl_pkcs7_ 命令做到这一点?我看到 openssl_pkcs7_verify 有 $outfilename 将存储证书,但我没有签名的消息,但似乎 $filename 应该有签名和消息,这不是我的情况(签名在单独的文件)。

0 投票
1 回答
752 浏览

ios - 如何从 iOS 发送带有附件的 S/MIME 加密邮件?

如何以编程方式发送使用 S/MIME 加密和签名的电子邮件?

我目前是如何做到的:

  • 准备 MFMailComposer
  • 将邮件另存为草稿
  • 切换到本机邮件应用程序
  • 打开说草稿
  • 发送草稿(直接从邮件应用程序打开它会自动加密/签名)

这似乎是徒劳的。

为什么我想要MFMailComposer:如果互联网不可用,邮件将被放入发件箱并在互联网可用时自动发送。如果我的 S/MIME 问题有一个不依赖于 MFMailComposer 的解决方案,它必须具有此“自动发送”功能。

0 投票
2 回答
2185 浏览

ldap - 在 inetOrgPerson 的 userSMIMECertificate 属性中添加证书

我将使用 LDAP 为我的电子邮件发布证书。我已经在 Windows 2012 上启动并运行了 LDAP (AD LDS)。我将使用 ldif 文件添加记录。

这里是它的内容

我一直在编译我的 ldif 文件。据我了解,我需要在 Base64 中添加一些二进制编码,并带有一些前缀 {CERT} 或其他东西。

我的问题是

  1. 这个 ldif 文件会对目录进行修改吗?
  2. userSMIMECertificate除了领域 ,我有问题吗?
    • 例如,我在域对象中使用了 dc 两次,可以吗?
    • 我错过了其他重要的线路吗?
  3. 将证书内容放入的确切语法是什么userSMIMECertificate?(我已经进行了搜索,但找不到示例)
0 投票
1 回答
385 浏览

encryption - 使用 PKCS12 向 IOS 发送电子邮件

我有一个问题,我尝试使用加密 FKCS12 发送消息并签名,我正在使用 BouncyCastle 使用证书(.cer)文件加密消息,并使用 .pb12 文件对其进行签名,问题是这样的:

黑莓、android、outlook at windows,甚至 Mac OSX 都可以打开邮件,但是当他们尝试用 IOS(一个 Iphone 4)打开邮件时,他们看不到内容,只能看到一条消息,告诉“电子邮件是加密的,要看到它,您需要安装一个包含其身份加密的身份”。

我认为发送电子邮件的 Java 进程是可以的。

有任何想法吗?

顺便说一句,这是代码:

问候