16

我正在设置我的应用程序以通过 Google 的日历 API 观看日历事件。为此,我必须在具有有效 SSL 证书(非自签名)的服务器上设置“推送”端点。

我的生产环境在 Heroku 上运行,因此使用 Expided SSL 设置 SSL 证书很容易。我在 GoDaddy 中设置了两个 CName,一个用于我的生产应用程序,一个用于通过 ngrok 隧道连接的开发环境。我正在使用白标域隧道 (dev.mydomain.com) 的付费 ngrok 功能。

Host           Points To

www            saga-1234.herokussl.com
dev            ngrok.com

问题是当您访问生产应用程序 (www.mydomain.com) 时,我的 ssl 证书被识别,但当您访问开发应用程序 (dev.mydomain.com) 时,它使用 ngrok 的证书。

在此处输入图像描述

如何设置我的 ngrok 隧道以使用我的 ssl 证书?

4

2 回答 2

11

如果您使用自己的域,Ngrok 的白标域不支持 HTTPS。仅仅因为它提供自己的证书,您需要在其中提供您的域的证书。这就是您遇到证书不匹配问题的原因。

以下是您可以在开发机器上观看日历事件的方法:

  1. 将 ngrok.mydomain.com 指向另一台服务器,假设是一个新的 EC2 微实例
  2. 将通配符 CNAME 指向 ngrok.mydomain.com
  3. 编译 ngrok 服务器和客户端以使用您的证书(而不是 ngrok.com)
  4. 在 EC2 实例上运行 ngroku-server
  5. 在您的开发机器上配置客户端使用 ngrok.mydomain.com 而不是 ngroku.com
  6. 运行 ngrok -subdomain=dev 80

您的本地开发机器的 80 端口应该可以通过https://dev.mydomain.com访问

这真的很酷,并且在调试需要有效 HTTPS 和经过验证的根域名的 Google 的 webhook 时非常有用。

另一个有趣的技巧是使用 CloudFlare 的通用 SSL 让有效的https://dev-machine.mydomain.com指向您的开发机器,而无需购买证书。步骤完全相同,只是您需要为 ngrok 客户端-服务器通信颁发自己的证书,并为 dev-machine.yourdomain.com 使用 CloudFlare 的 Flex SSL。

于 2014-11-19T18:16:43.387 回答
1

ngrok 具有隧道和终止 SSL 的新功能。因此,您可以使用自己的域和 HTTPS。无需在路由器或 PC 中打开端口。他们称之为 TLS 隧道。以下是 GitHub 存储库的链接,描述了如何执行此操作。

如何使用您自己的域通过 Internet 访问您的家庭 PC。使用 HTTPS 而不会引发 SSL 错误。

于 2016-04-12T22:29:43.817 回答