服务器到服务器的 HTTPS 客户端证书

信息安全 tls 验证 证书 证书颁发机构
2021-08-31 21:56:21

假设您有两台服务器,它们的证书证明了它们的域(例如用于 HTTPS)。

这些服务器中的一个是否可以在与另一台通信时将其证书用作客户端证书,以便两台服务器都可以确定对方的域名?例如,“ https://example.com ”可以得到一个确定来自“ https://elsewhere.com的请求,因此可以安全地发送特定于该域的秘密(即使它以前从未见过该域) .

(编辑:我知道 TLS 通常存在客户端身份验证,但我特别感兴趣的是来自“https”PKI 的相同证书是否可用作客户端证书。例如,使用标志会阻止它们“正常工作” “与现有的实现。)

3个回答

实际上,SSL/TLS 有一个经常未使用的(至少在 Web 上)可选部分允许客户端身份验证。它通常不在网络上使用,因为服务器并不真正关心客户端是否是他们所说的 - 他们只需要拥有正确的凭据即可。此外,想象一下必须验证世界上每个客户端到特定计算机、IP、域等的噩梦。我什至不知道它是如何工作的。这将是一种全球互联网身份证/证书 - 如果你问我,这是一个非常可怕的想法!

维基百科在这里有一个不错的演练,解释了客户端身份验证的工作原理:http ://en.wikipedia.org/wiki/Transport_Layer_Security#Client-authenticated_TLS_handshake

您可以将其与基本握手进行比较,以了解我们看到 SSL/TLS 握手失败的更常见方式。

因此,您的问题的答案绝对是“是”,因为在这种情况下,您的一台服务器仍充当“客户端”。最后一部分只是语义。

是的。如果 EKU 允许。

如果证书中允许,您可以使用证书/密钥作为客户端证书。即 if在(EKU) 部分中TLS Web Client Authentication是允许的。Extended Key Usage

例如:在example.com证书中它实际上是允许的。(我不知道。)

$ echo -n | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

好像流传很广。

下面是大型网站的快速现成示例。

$ echo -n | openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

$ echo -n | openssl s_client -connect amazon.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

$ echo -n | openssl s_client -connect microsoft.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

$ echo -n | openssl s_client -connect apple.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

进一步阅读:

给定的 x509 证书是否可用于 Client authed SSL 连接的客户端取决于颁发 CA 放置在证书上的 Key Usage 和 Extended Key Usage 选项。

您可以使用检查 x509 证书 openssl x509 -in certfile.pem -text

Key Usage 选项是指允许使用证书的各种操作,例如:数字签名、密钥协议、EncipherOnly 等。

Extended Key Usage 选项通常指更高级别的操作,例如:服务器身份验证(您将用于 SSL 服务器)、客户端身份验证(您将用于 SSL 客户端)、代码签名和许多其他操作。

如果您有一个 x509 证书,它同时具有服务器身份验证和客户端身份验证扩展密钥使用选项,那么您可以确定它在这两个角色中都可以使用。如果它只有 Key Usage 选项,您可能需要进行试验。

更完整的选项列表可以在rfc 5280 的4.2.1.3 和 4.2.1.12 部分中找到