带有 SSL 和主机名的 Ngrok
Posted
技术标签:
【中文标题】带有 SSL 和主机名的 Ngrok【英文标题】:Ngrok with SSL and hostname 【发布时间】:2017-05-01 03:53:54 【问题描述】:我正在尝试通过 ngrok 公开我的本地开发站点。我的网站使用 https(在端口 7443 上)并且因为我使用 OpenConnect 进行身份验证,所以我在我的 Windows 主机文件中设置了主机名(例如“127.0.0.1 aaa.bbb.ccc.com”)。在本地,我通过https://aaa.bbb.ccc.com:7443 访问该站点(我无法更改此设置,否则 OpenConnect 将中断)。
我在 ngrok 仪表板中创建了一个保留域,但我不知道如何创建 CNAME 条目 - 这是否需要 hosts 文件中的另一个条目?
我正在尝试使用此命令运行 ngrok:
ngrok tls -hostname=aaa.bbb.ccc.com 7443
但它说我必须提供一个参数。如果我使用
ngrok tls -hostname=aaa.bbb.ccc.com:7443
我收到“隧道会话失败:您必须在绑定之前为您的帐户保留自定义主机名。无法为帐户 'xxxx' 绑定域 'aaa' - 它不喜欢子域。
【问题讨论】:
【参考方案1】:首先,您应该知道 hostname 和 tls 选项不随免费版本的 ngrok 提供。如果您使用的是付费版本,那么您需要这样做:
在您的仪表板中保留一个域并获取 CNAME 如果您在互联网上注册了域,请转到您注册它的站点并更改 dns 设置以允许您当前的子域从 ngrok 指向 CNAME(据我所知,该域不是互联网域,因此此选项可能不适合您) 对于本地域,尝试将域指向主机文件"<CNAME> aaa.bbb.ccc.com"
中的 ngrok CNAME
启动 ngrok 并将其指向运行本地服务器的端口,例如 ngrok tls -hostname=aaa.bbb.ccc.com:7443
如果您的服务器运行在 7443 上
注意:如果您不需要安全的 ssl 连接 (https),您可能希望使用 http 选项而不是 tls 选项来启动服务器
【讨论】:
我升级到付费版试试这个。我还尝试在我的主机文件中添加条目(使用 CNAME 的 IP 地址),但这没有用(502 网关错误)。 如果您使用 tls,那么您需要为域签名证书,否则大多数服务将不接受它(假设您正在尝试设置网络挂钩)。几天前我遇到了这个问题,所以请详细告诉我你做了什么以及你得到的结果,我也许可以提供帮助 我有一个颁发给 *bbb.ccc.com 的证书,它安装在我的 IIS 服务器中。在我使用这个 SSL 证书的站点绑定中。我是否必须使用 TLS 客户端终止,以便 ngrok 知道此证书?例如“ngrok tls -crt tls.crt -key tls.key 443” @Silverfox,如果您运行安装了证书的 IIS 服务器,那么您不需要使用证书运行 ngrok。只要您使用不同的主机名,就会允许 IIS 服务器终止连接。所以假设 IIS 在端口 443 上运行,然后像这样运行 ngrok。ngrok tls -hostname=aaa.bbb.ccc.com:443
确保您从 ngrok 获得的 CNAME 准确指向 aaa.bbb.ccc.com。我假设您已经更改了 Internet 中的 dns 设置,以允许您的子域指向您从 ngrok 获得的 CNAME。以上是关于带有 SSL 和主机名的 Ngrok的主要内容,如果未能解决你的问题,请参考以下文章
配置基于主机名的虚拟主机及HTTPD 加密SSL配置以及HTTPS强制跳转