【发布时间】:2019-06-21 22:24:12
【问题描述】:
我必须通过验证他们的客户端证书来验证我们 REST API 的使用者,我对如何验证客户端有点困惑。
将 CA 证书存储在我的本地存储中是否足够,向客户端发送证书(编辑:通过电子邮件或其他形式,而不是 API),并让他们将证书附加到每个 API 调用。在我这边,我会验证链,然后按序列号加载用户(即将序列号映射到用户),然后从那里开始?
这是完全安全的还是我需要添加一些其他验证,例如 CN 中的用户名等?
对于客户端发布到服务器和服务器发布到客户端使用相同的证书是否还会存在任何安全问题?
【问题讨论】:
-
简短:这不是一个好习惯。证书应通过 API 本身以外的其他渠道分发给客户端。 EG 通过可信赖的权威机构,可以是您自己、外部公司或部门(并通过邮件发送)。证书仅代表受信任的客户端,只有在您或受信任的代表知道他们的情况下,您才能信任他们。 Ergo:“使用相同的证书让客户端发布到服务器和服务器发布到客户端也会有任何安全问题吗?”答:是的。
-
@CasparKleijne 好的,这是有道理的!如果我可能会问为什么使用相同的证书来验证服务器上的客户端以及加密到客户端的流量会是一个安全问题?编辑:我想如果我考虑一下,我知道。有人可以在浏览器中访问 API,保存证书,然后使用它进行身份验证。
标签: c# security ssl .net-security