在不向 TTP 透露我的私钥的情况下获取 S/MIME 证书

信息安全 证书 证书颁发机构 微笑
2021-08-31 08:49:39

我想获得一个受信任的 S/MIME 证书,但到目前为止我要求的所有证书颁发机构都在他们的服务器上生成密钥对,签署证书并向我发送私钥和公共签名证书。

在我看来,这不必要地将我的私钥暴露给证书颁发机构,而且鉴于 PRISM 还有许多其他人,我不明白他们为什么需要查看我的私钥。

在我的机器上创建不受信任的证书openssl不是问题。有谁知道证书颁发机构会签署已经创建的公钥而无需访问我的私钥?

我知道基于 OpenPGP 的解决方案可以避免这个问题,但很少有人和电子邮件程序使用它。

2个回答

商业 CA 坚持制作您的私钥不是标准的。因为你提到的原因。

这是一个指向 CA 提供者集合的链接,它建议(并且正确地)典型的事情是让您的浏览器创建密钥对,然后将证书签名请求发送到 CA。根据我使用高端威瑞信证书的经验,这是真的。我从未尝试过免费/便宜的解决方案。

请记住,即使 CA 引导您完成基于浏览器的请求,您也很可能将私钥完全存储在浏览器中 - CA 公司花费一定的精力进行浏览器兼容性测试以使其成为可能。不要仅仅因为您使用浏览器就认为服务器正在生成密钥。除非它提供“密钥托管”,否则我的经验是这不太可能。

在大多数情况下,我与 CA 公司的经验是,他们真的不想接受错误的形式因素 - 如果您想发送自制的证书签名请求,您可能需要找到成本更高的服务...原因是纯粹的成本 - 这种方法通常涉及更多的人手,因为搞砸的方法很多,并且通常必须弄乱“通用”证书请求才能满足所需的安全策略和设置由 CA。

如果您绝对必须使用 OpenSSL 生成证书,我会说寻找可以让您将其配置为看起来像 S/MIME 证书的服务器配置选项。准备支付服务器证书费用。

如果没有,请仔细检查该过程并验证是否在浏览器上生成了密钥。

虽然 CA 不需要私钥来颁发证书,但S/MIME的证书将用于加密:一旦您拥有 S/MIME 证书,人们将向您发送加密的电子邮件,并且电子邮件将在您的邮箱。

这意味着丢失您的私钥(例如,您的计算硬盘出现故障,或您的笔记本电脑被盗)必然会丢失您宝贵的电子邮件。这是个问题。为了避免这种情况,加密密钥应该有备份(密钥托管可以被视为一种备份)。从这个意义上说,CA 生成密钥对保留私钥副本可能是一项非常有用的服务。

好的 CA 应该为您提供在您一方或他们一方生成私钥之间的选择。如果您自己生成私钥,而不是给 CA(只有公钥,作为证书请求的一部分),那么任何类型的备份当然都是您的责任。


大多数 CA 的默认模式是最容易操作的,并且使愤怒或苦恼的客户打电话给他们的可能性尽可能低。证书生成过程将主要基于 Web,但证书及其私钥必须用户的邮件应用程序可用,这可能与他的 Web 浏览器完全脱节。将 PKCS#12 (PFX) 存档作为文件发送给用户是一种“无处不在”的方法(如果邮件应用程序完全支持 S/MIME,那么它支持导入 PKCS#12 文件)。本地私钥生成、发送证书请求、获取证书并导入、恢复私钥和证书之间的逻辑链接,是一个可以工作,但取决于具体涉及的软件(操作系统类型、操作系统版本、浏览器类型、浏览器版本、邮件应用程序类型、邮件应用程序版本)。许多变体意味着服务台呼叫的风险增加,这是运营专业 CA的主要成本。