SSL 客户端身份验证

SSL 客户端身份验证

我目前已安装服务器 SSL,以便客户端可以安全地连接到我的 Web 服务器。

除了常规的用户名/密码登录之外,我还希望实施客户端 SSL 证书,但我很难理解到底需要做什么。

  1. 每个用户是否都应该收到自己的证书?
    1. 这应该在创建用户帐户时生成吗?
    2. 用户是否应该为其使用的每台设备获得单独的证书?(例如手机,平板电脑,个人电脑)
    3. 证书 DN 中的字段应该是什么?
  2. 对于每个用户证书,是否应该有一个对应的私钥,或者所有证书都应该有一个密钥?
  3. 这些用户证书是如何分发的?有没有自动安装的方法?
    1. 它们是否应该存储在服务器上以供下载?

答案1

每个用户是否都应该收到自己的证书?

一般来说是的。
你可以为每个人使用一个证书(并根据用户名/密码确定实际用户是谁),但如果该证书被盗用,你就必须向每个人——这对您或您的用户来说都不方便。

  • 当创建用户帐户时,应该为每个用户生成证书。
  • 证书可以是针对每个用户的,也可以是针对每个设备的
    。这是一个实施选择。请根据您的环境选择合适的证书:
    • 如果您正在验证设备是否被授权,则每个设备证书都是有意义的。
    • 如果您要验证特定用户(U/P)的身份是否属实,则每个用户证书均有效。

是否应该有一个全局私钥,或者每个证书一个密钥?

每个证书肯定有一个密钥。

所有用户证书都应为公钥/私钥对,且每个用户(或设备)独有。
它们都应由一个受信任的机构 (您公司的 CA 证书) 颁发。


用户证书是如何分发的?

任何你想要的方式(受各种平台和软件的限制)。
我建议不要将它们发布在网页上供世界上的任何人复制,但如何将证书发送到设备是您可以做出的实施选择。

如果您将证书对存储在服务器上,则应确保该服务器是安全的——您不希望有人获得您的所有(有效)证书。
重新为所有用户输入密钥将是一件麻烦事(而且很难解释)。


一定要读Dawud 指出的 IT 安全问题它涵盖了生成证书(以及同样重要的 CRL)的一些机械方面。
信息技术安全还有其他关于证书认证的问题/答案,对于你需要实施的理论和原则来说,这将是一个很棒的资源,可以让你真正安全的。

相关内容