Domain-Name-System
Https 版本的 Web 應用程序不工作,但 http 是?
我正在使用 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文件中描述了在您的應用程序中使用自己的證書的步驟。簡而言之:
- 使用 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
- 使用 CSR 購買證書。
- 創建附加組件並添加您的證書:
heroku addons:create ssl:endpoint heroku certs:add server.crt server.key --type endpoint