通过托管 PKI 使用客户端证书的 VPN - 私钥从何而来?

信息安全 证书 linux 虚拟专用网 苹果系统
2021-08-27 07:51:02

$company 允许 Mac 用户通过 Symantec PKI 请求客户端证书以连接到他们的 SSL VPN 服务器。此过程涉及访问特定的赛门铁克网站(具有某种标识 $company 的 ID)并输入您的姓名(“通用名称”)和电子邮件地址。一旦得到公司管理员的批准,它会给你一个下载.cer文件的链接,当它被导入时,Keychain会有一个用户名的证书和一个链接到它的私钥。

那个私钥是从哪里来的?它没有出现在.cer文件中(这似乎是 3 个以 PKCS#7 格式捆绑的证书)。导入时是否有一些触发器告诉Keychain您从 PKI 服务器获取私钥?是否有任何通用工具(例如openssl)可以在 Linux 上执行此操作?

编辑:

.cer文件包含CN=MyNameHere(用户)的证书、属于 $company 的颁发 CA 证书和也属于 $company 的中间 CA 证书。

是一篇解释如何在windows下导出私钥的文章,但不幸的是也没有解释私钥是如何到达那里的。

这是另一个从 Mac 角度来看关于导出私钥的文档,但同样没有首先介绍密钥是如何到达那里的。

4个回答

我略有猜测,但是,我怀疑在浏览器中正在使用generateCRMFRequestimportUserCertificate组合。已弃用的 Firefox Javascript_crypto文档概述了该过程。

类似的事情可以用Internet Explorer来实现。我没看过,但我想 Safari 也有一定程度的支持。

这些完全是非标准的扩展,根据 CA/Browser 论坛上的这篇文章,不是未来。

密钥是在本地生成的,但是很难判断该密钥是否也被发送到 CA 以进行“归档”,如 generateCRMFRequest 中那样。由于 javascript 可以访问生成的密钥,因此可以想象它可以通过 Internet 发送。

最后一点信息,在 Linux 中是否有通用工具来执行此操作?据我所知不是。您当然可以经历以下过程:

openssl genrsa ... -out private.key
openssl req -new ... -inkey private.key -out certplease.csr

将 certplease.csr 发送到 CA。从他们那里你会得到一个由他们签名的 PKCS#7 证书(如果需要的话,可能还有链中的其他证书)。

但是,我不相信 Linux 中存在标准的基于用户的私钥存储 - 相反,每个桌面环境都有一个稍微不同的环境。

这是一个有趣的问题。

首先,关于您获得的文件的一些想法.cer:查看PKCS 标准列表;PKCS#7 只是一个用于传输签名/加密数据的容器,它并没有告诉我们该数据可能是什么。如果里面的数据是PKCS#12 格式,那么它完全有可能绑定了私钥。我想有一个重要的问题:您是否必须在导入密码时输入密码.cer

赛门铁克托管 PKI

Symantec™ 托管 PKI 服务部署选项指南中有一些提示(但没有答案)

你清楚地描述

2.1.1 原生浏览器注册

本机浏览器注册不需要在最终用户的计算机上安装软件,并且适用于云和混合场景。

虽然它相当缺乏关于密钥生成位置的详细信息。

让服务器为您生成一个私钥并将其捆绑到.cer文件中将与以下语句一致:

...此选项对于确保高安全性证书(例如智能卡或 USB 令牌)最终存储在适当的存储中非常重要。

由于根据定义,证书是公开的,因此“高安全性证书”这一短语唯一有意义的方式就是是否捆绑了私钥。

他们还大量引用了 Microsoft Active Directory 注册/密钥管理服务。但这并不能解释您的 Linux 案例。

编辑:呵呵。其他可能的情况是浏览器可以访问操作系统的加密功能(例如Microsoft CAPI),并且注册页面上的 javascript 让操作系统创建私钥,并生成证书请求,包括拥有证明那把钥匙。

私钥由创建证书请求的客户端生成。当客户端导入证书时,Keychain 应用程序会自动识别该证书是针对该特定私钥的。

我不确定赛门铁克,但 Comodo 几年前(~2012 年)为此目的使用了 html5 密钥生成器。Keygen 标签生成 SPKAC 格式的 csr,用户界面通常(在网页上)包含具有可用密钥长度的下拉框。https://en.wikipedia.org/wiki/SPKAC

火狐、chrome 和 opera 都支持 Keygen,但 Internet Explorer 从未支持过它。

对于opera12,在通过keygen表单之后,但在接收证书之前,证书管理器中曾经有未附加的私钥,这些私钥是为该csr生成的。(如果最终证书永远不会出现,这些密钥将永远保留在证书管理器中)。(个人选项卡,在证书管理器中)。

我不知道firefox或chrome如何处理这个问题的确切细节。