heroku - 在 ngrok 开发环境中使用 SSL 证书

标签 heroku google-api ssl-certificate ngrok

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

我的生产环境在 Heroku 上运行,因此使用 Expidited 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 的证书。

enter image description here

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

最佳答案

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

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

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

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

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

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

    关于heroku - 在 ngrok 开发环境中使用 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23852427/

    相关文章:

    ruby-on-rails-3 - Heroku + Rails + PostgreSQL 问题

    css - 部署到 Heroku 后未加载更新的 CSS 样式表?

    javascript - 使用 Google API 检索联系人姓名

    Heroku:subjectAltName 不匹配

    python-3.x - 如果服务器没有在python3中以两种方式SSL身份验证请求客户端证书,如何停止握手和数据共享?

    javascript - 将worker dyno添加到Heroku应用程序时出现“缺少必需标志”错误

    ruby-on-rails - Heroku worker dyno 不断崩溃无法从 Resque 启动

    javascript - Google Calendar API V3 获取与会者和创建者 java 脚本问题

    java - Google drive rest API,仅从根文件夹下载文件

    ssl-certificate - Homebrew 安装 MongoDB 失败