首页 > 解决方案 > 是否可以获得用于端口转发 VPN 服务的 SSL 证书?

问题描述

在我的示例中,我使用了https://portmap.io VPN 服务,它不完全是纯粹的 VPN 服务,但仍然使用 VPN 技术来打破我的 ISP 限制,允许端口转发到我在我的 android 设备中运行的我自己的家庭服务器。

因此,如果我运行 193.161.193.99:1200,我的网站就会被浏览。端口 1200 映射到我在端口 1000 上运行的本地 python 服务器端口。端口 1200 由 VPN 提供商提供。

但是,如果我在没有端口 1200 的情况下尝试 193.161.193.99。端口映射 VPN 官方网站被调用,因为那是网站的 IP。所以基本上这个 VPN 服务的每个用户都有自己的端口可以使用。

问题:我没有任何公共 IP 完全由我自己控制来获得 SSL 证书,这需要 CA (CSR) 的文件上传验证。那么,是否有可能使用 193.161.193.99:1200 获得 SSL 证书?

注意:zerossl.com 等服务接受为 ipv4 公共地址提供证书。因此,使用 FQDN 获取证书并不总是必要的。

标签: ssl-certificatevpnportforwarding

解决方案


是的,这是可能的,您需要一个指向 VPN/portmap IP 的域,然后从Let's Encrypt为该域获取 SLL 证书。这可以是您自己的域,也可以是Duck DNS等动态 DNS 服务提供的域。

我将详细描述我是如何使用 Docker 和 Duck DNS 完成的:

  1. 登录 Duck DNS,创建一个子域并将其指向 VPN/portmap IP,注意页面顶部的令牌。
  2. 从 LinuxServer.io 的SWAG Image部署一个 docker 容器
  3. 确保在 docker-compose.yml 中提供所需的环境变量(或使用 docker run 命令):
- VALIDATION=duckdns
- DUCKDNSTOKEN={your token}
- URL={yourdomain}.duckdns.org

注意:如果你想要你的 VPN 后面的所有东西,有一个很棒的 docker 容器叫做gluetun,它允许你在你的 VPN 后面运行 swag 容器

  1. 您将在 SWAG 容器的 /config/etc/letsencrypt/live/{yourdomain}.duckdns.org 文件夹中找到您的 SSL 证书。将这些用于在转发端口后面运行的网站/服务。

证书将在到期前 30 天自动更新。还有一个 PKCS#12 文件 privkey.pfx,这是 emby 等服务所必需的。有关 SWAG 的更多信息,请参阅LinuxServer.io 文档。您可能需要也可能不需要另一个运行定期更新 Duck DNS IP 的容器,我不确定 SWAG 容器是否已经这样做了。

当然,所有这些都可以在没有 Docker 和您自己的域的情况下完成。在这种情况下,您需要将您的域或子域映射到域提供商的 DNS 记录部分中的 VPN IP。然后使用certbot为该域创建证书。Docker 只是自动化了更新部分。


推荐阅读