Domain-Name-System

Https 版本的 Web 應用程序不工作,但 http 是?

  • June 7, 2019

我正在使用 Heroku 託管,它為我提供了一個不錯的https:地址:

https://some_random_string.herokuapp.com/

我使用 Namecheap 來設置我的 DNS,我使用以下方法執行此操作:

CNAME Record | www | www.my_domain.herokudns.com.

heroku domains在 macOS bash 控制台中找到了這些資訊。

www.my_domain | 域名 | www.my_domain.herokudns.com

一切正常,除了s在我使用自定義域時從 Heroku 地址中刪除。

https://Heroku 會提供一個地址但不允許您重定向到它,這有點奇怪。

您可以聯繫他們的客戶支持並詢問如何正確設置 CNAME,以便您可以使用他們已經為您創建的證書。

改變…

www.my_domain | 域名 | www.my_domain.herokudns.com

是解決這個問題的關鍵。

根據 Heroku Dev Center Custom Domain Names for Apps的說法,TLS 主機名有不同的模式:

如果您使用的是SSL 端點,請注意您的 DNS 目標會有所不同。對於 Common Runtime 中的應用程序,端點域名將具有example-12345.ssl.herokudns.com.

雖然每個應用程序都可以使用預設*.herokuapp.com主機名在 HTTPS 上提供服務,但使用您自己的域需要匹配的 TLS 證書。SSL Endpoint文件中描述了在您的應用程序中使用自己的證書的步驟。簡而言之:

  1. 使用 OpenSSL生成私鑰和證書籤名請求CSR:
openssl genrsa -des3 -out server.pass.key 2048
openssl rsa -in server.pass.key -out server.key
openssl req -nodes -new -key server.key -out server.csr
  1. 使用 CSR 購買證書。
  2. 創建附加組件並添加您的證書:
heroku addons:create ssl:endpoint
heroku certs:add server.crt server.key --type endpoint

引用自:https://serverfault.com/questions/968160