2017-07-13 60 views
0

我为根CA,中间CA和服务器创建了三个证书。他们代表了简单的信任链:TLS放置证书的位置

server -> intermediate -> root 

问题是如何正确地把它们放在客户端和服务器上。
我有两个选择:

  1. 放在客户端的trustStore证书 - 中间服务器证书服务器的keyStore。因此,服务器将发送两个证书,客户端将验证具有中间的服务器证书,这将通过存储在客户端的trustStore中的根证书进行验证。

  2. 中间证书客户的trustStore时服务器将只存储自己的证书在的keyStore

赐教:)

+0

您的证书是否来自可信任的CA或自签名? – devang

+0

@devang自签名 - 我使用OpenSSL生成所有证书 –

+0

由于自签名,您的步骤对于服务器端设置是正确的。此外,您必须将root-ca放置在客户端的信任库中,并将root-ca放入'/ etc/ssl/certs'目录并运行'ca_rehash'。确认你使用'openssl s_client -connect '连接服务器是否正确。只有当您计划从命令行进行http调用时才需要放入/ etc/ssl/certs,例如卷曲/ wget的。 – devang

回答

1

当我已经建立了网站服务器与中间证书我已经把中间证书的服务器上。它是服务器向客户端证明其身份的工作,为此,它会发送Web服务器证书和受信任根之间的证书层次结构(中间证书),因为客户端可能没有这些证书。 所以你的选择1将是我想的方式。

+1

根据标准(https://tools.ietf.org/html/rfc5246#section-7.4.2 et pred),这是必需的,虽然人们有时候会欺骗和浏览器或客户端_may_试图应付。 –

0

您不需要安装客户端信任库中的根证书和中间证书。这只是多余的。您安装的取决于您希望客户信任的人员。通常这将是根CA,因此您只能在客户端安装该CA。如果由于某种原因您只希望客户端信任中间CA,则只能安装该中间CA。