用于 IPv4 over IPv6 转发连接的 SSL

用于 IPv4 over IPv6 转发连接的 SSL

关于这个问题,有以下网络设置。家里有一个 cubieboard,在我路由器后面运行 Apache 服务器。问题是我的 ISP 只给我一个 IPv6 地址,并使用 DS-Lite 进行传出 IPv4 连接。

因此,当尝试从 IPv4 连接时(因为 IPv6 仍然不常用),我利用具有静态 IP 地址的根服务器通过 IPv6 将请求转发到我的 cubieboard。

我注册了自己的域名,并且在 cubieboard 上有一个脚本可以将域名与我的 ISP 每天变化的 IPv6 地址同步。

在我的根服务器上有一个索卡特进程正在运行以监听端口 X[IPv4] 并将其转发到端口 Y[IPv6] 上的我的域。

虽然这很完美,我可以从 IPv4 访问我的 cubieboard,但我不知道如何使用 cubieboard 上的 apache 服务器设置 SSL,以便我可以通过这个 IPv4 到 IPv6 连接使用 SSL 访问它。

我已经拥有 Let's Encrypt 的 SSL 证书,该证书可以在 cubieboard 上创建,因为 Let's Encrypt 仅支持 IPv6 域。但由于此域仅连接到 IPv6 地址,我无法在只有 IPv4 可用的浏览器中简单地使用它。

                      socat
                      localhost:1234[v4] to
-------------------   mydomain.com:80[IPv6]    -------------------------
| cubieboard IPv6 |  <-----------------------> | root server IPv4/6    |
| apache port 80  |                            | socat Port 1234[Ipv4] |
-------------------                            -------------------------
        ^
        |
---------------------
| SSL certificate   |
| mydomain.com IPv6 |
---------------------

答案1

您的 SSL 设置应该可以适用于您现有的网络设置的大部分内容。TLS(SSL 的当前名称)不关心它是在 IPv4 还是 IPv6 上运行,也不关心它是否在两者之间转换。

你可能会遇到的一个问题是 TLS 实现会根据证书检查你输入的主机名。因此,如果你连接到https://根服务器:1234/,您可能会获得 mydomain.com 的证书,但浏览器会发现该证书无效。

为了解决这个问题,您可以将根服务器的 IPv4 地址添加到 mydomain.com 的 DNS 条目中。这样,您就可以连接到https://myd-om-ain.com:1234/,主机名将匹配。缺点是 Let's Encrypt 可能会开始失败,因为它将连接到 mydomain.com 上的 TCP 端口 80,而该端口最终可能会位于您的根服务器上(并且不是正在转发)。

附言:由于 superuser.com 规则,我不得不隐藏链接。抱歉

相关内容