【发布时间】:2023-03-30 00:13:01
【问题描述】:
我正在尝试在服务器端为我的网站用户创建证书,以便他们可以进行身份验证,而不是我已经提供的基本身份验证,即用户名/密码。
我可以在服务器端而不是客户端完成生成用于创建 CSR 的公钥/私钥的整个过程吗?
我正在考虑以下过程:
用户登录网站并通过用户名/密码进行身份验证。
用户将通过用户浏览器和服务器之间的 SSL 连接通过 Web 表单提交识别详细信息。
然后服务器将为该用户创建公钥/私钥,并使用它们在服务器上创建 CSR。然后服务器将使用 CSR 为用户创建证书。然后它将通过 SSL 将证书发送给用户。然后服务器将删除创建的公钥/私钥。
最后,用户将在他们的浏览器上安装证书。
这行得通吗?它在某种程度上不安全吗? 是否可以像这样从客户端转移到服务器端来创建用于创建 CSR 的公钥/私钥的责任? 这是否会使创建的证书在某些方面对用户的用处降低?
【问题讨论】:
-
Startcom 使用此工作流程。首先,您使用用户名/密码创建一个帐户。创建基本帐户后,他们会向您颁发 PKI 证书以访问所有服务。你应该研究他们的工作流程。
-
我今天早些时候看到了下面的帖子security.stackexchange.com/a/22682/46055 但想知道,用户用于签署 CSR 的私钥是否需要在颁发证书的过程之外进行?如果不是,为什么链接讨论中的人们担心 Startcom(可能)保存这些私钥?
-
"...是用户用于签署 CSR 的私钥..." - 不,CSR 不是由主体(即用户)签署的。 CA 唯一需要的是主体的信息(即用户的信息)和他/她的公钥。这就是 X509 证书所做的全部 - 它将公钥绑定到实体。绑定通过受委托方的签名(即 CA 的签名)发生。
-
"...为什么链接讨论中的人们关心 Startcom(可能)保存那些私钥” - Startcom 这样做是为了让一些用户更容易(想想:非技术人员) . SE 的观察是正确的——你不应该让像 Startcom 这样的人生成私钥(顺便说一下,微软在其开发人员程序中做了同样的事情)。由于您是技术用户,因此您应该只使用另一种方法(即,做额外的工作以确保安全)。
-
@jww 我看不到你的回复,为什么人们会担心。如果他们的机器上没有私钥,或者其他人有他们的私钥,什么是行不通的?
标签: ssl ssl-certificate x509 csr