设置客户端证书以进行相互身份验证

时间:2016-10-13 18:26:05

标签: ssl

我正在尝试为我的Web应用程序设置双向ssl相互身份验证。我目前还没有设置我的客户端,而是通过浏览器测试我的Web服务。

我使用Mac上的钥匙串工具创建了客户端证书,并在Firefox中导入certificate.p12文件。我还有一个certificate.cert文件。根据我的理解,我需要在我的服务器信任库中添加此证书文件。

为此,我需要使用以下命令:

keytool -import -trustcacerts -alias <hostname of DP> -file <your file.crt> -keystore <truststorefile>

但是,我添加什么作为我系统的主机名?浏览器将显示我的网络服务器的主机名?

1 个答案:

答案 0 :(得分:1)

首先,如果您拥有由知名CA(如Verisign,GoDaddy等)或本地信任的CA(如您的雇主)颁发的客户证书,则无需执行任何操作。客户端只需向证书提供一条通向已经信任的CA的链。

如果您已从自己的CA颁发了客户端证书,则应将 CA(root)cert 添加到服务器信任库。然后,将验证该CA颁发的所有客户端证书,而无需进一步努力。如果您通常的做法使CA证书长期存在,您甚至可以在服务器上轻松更新和/或替换客户端证书。如果你设置了CRL发行版和/或OCSP,你可以自动撤销它们,虽然DIY CA并不总是想要付出那些努力。

如果您已创建自签名客户端证书,则只需将该特定证书添加到服务器信任库。虽然SSL / TLS 服务器证书必须由服务器的主机名标识,但不要求客户端证书,并且CA证书(默认情况下通常在您的信任库中的证书)从不具有作为主题的主机名(尽管某些扩展名通常包含包含主机名的URL)。协同设计证书也不需要使用主机名。

Java信任库中的cert条目的别名不需要是主机名;它只有需要才是唯一的,尽管它应该是证书主题的助记符。例如,如果您的客户端证书是针对名为Alice和Bob的用户(或者更可能是他们的PC或任何设备),则可以使用alicebob作为别名。