【问题标题】:HTTPS client - certificateHTTPS 客户端 - 证书
【发布时间】:2017-01-02 03:31:48
【问题描述】:

我用 C 编写原始 HTTPS 客户端 - 一个程序获取域名,将其解析为 IP 地址(通过 DNS),连接到端口 443 (SSL) 上的 IP 地址,执行 SSL 握手,然后通过SSL 套接字。

要试用这个程序,我在网络服务器上托管了一个域。我为域安装了 Let's encrypt 证书。

我发现有许多域名与我的域共享相同的 IP 地址。那么当我连接到端口 443 上的 IP 地址以执行 SSL 握手时,谁确保 mydomain 的 SSL 证书将从服务器发送到客户端,而不是属于其他域名的另一个证书共享相同的 IP 地址?

【问题讨论】:

标签: ssl


【解决方案1】:

存在一个名为 Server Name Indication (SNI) 的 TLS 扩展,它被广泛使用(例如,http/2 客户端需要)。你可以在RFC 6066找到这个扩展的正式规范。

使用 SNI,客户端可以在其 Hello 请求中发送所需的主机名,从而允许服务器为此连接选择匹配的密钥/证书组合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2017-04-01
    • 2010-10-26
    相关资源
    最近更新 更多