我成功地使用Letsencrypt 生成证书,并使用以下命令将它们上传到 Heroku:
this-site ********$ heroku addons:create ssl:endpoint
Creating ssl-graceful-41756... done, ($20.00/month)
Adding ssl-graceful-41756 to this-site... done
Next add your certificate with `heroku certs:add CERT KEY`.
Use `heroku addons:docs ssl` to view documentation.
this-site ********$ sudo heroku certs:add /etc/letsencrypt/live/www.this-site.com/fullchain.pem /etc/letsencrypt/live/www.this-site.com/privkey.pem
Resolving trust chain... done
Adding SSL Endpoint to this-site... done
this-site now served by qwasf-34234.herokussl.com
Certificate details:
Common Name(s): www.this-site.com
Expires At: 2016-09-02 19:15 UTC
Issuer: /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
Starts At: 2016-06-04 19:15 UTC
Subject: /CN=www.this-site.com
SSL certificate is verified by a root authority.
但是,当我访问 qwasf-34234.herokussl.com 时,它不起作用。 它有一个页面说:Heroku |没有这样的应用程序;没有在该主机名上配置任何应用。可能是应用所有者重命名了它,或者您输入了错误的 URL。
我正在复制并粘贴heroku给我的确切新主机。 转到 https://qwasf-34234.herokussl.com 将生成相同的页面。
我通过以下方式验证了证书:
this-site ********$ heroku certs
Endpoint Common Name(s) Expires Trusted
-------------------------- --------------------- -------------------- -------
qwasf-34234.herokussl.com www.this-site.com 2016-09-02 19:15 UTC True
更多检查:
this-site *******$ curl -kvI https://www.this-site.com
* Rebuilt URL to: https://www.michaelsutyak.com/
* Trying 23.21.142.230...
* Connected to www.this-site.com (23.21.142.230) port 443 (#0)
* TLS 1.2 connection using TLS_********************
* Server certificate: *.herokuapp.com
* Server certificate: DigiCert ******
* Server certificate: DigiCert *******
> HEAD / HTTP/1.1
> Host: www.this-site.com
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Server: Cowboy
Server: Cowboy
< Connection: keep-alive
Connection: keep-alive
< Vary: Accept-Encoding
Vary: Accept-Encoding
< Content-Type: text/html; charset=utf-8
Content-Type: text/html; charset=utf-8
< Date: Sat, 04 Jun 2016 20:57:00 GMT
Date: Sat, 04 Jun 2016 20:57:00 GMT
< Via: 1.1 vegur
Via: 1.1 vegur
<
* Connection #0 to host www.this-site.com left intact
这是怎么回事,这如何工作? 我只想要我的网站的https。
您无法直接访问 Heroku SSL 端点。该终端节点表示您需要将域指向的主机名,如 Heroku 文章的 DNS 和域配置中所述。
如果要指向子域(例如 www.this-site.com),请在 DNS 托管提供商中创建 DNS 记录别名记录,将www
记录指向 Heroku SSL 端点:
www CNAME qwasf-34234.herokussl.com
如果要指向根域 (this-site.com),则需要使用支持根域的类似 CNAME 记录的提供,如这篇 Heroku 文章中所述,因为不能对根域使用 CNAME。
确保您的域未仍指向herokuapp.com
主机名。
您可以通过向 SSL 端点发送cURL
请求来测试我的断言,但传递 Host
标头(就像浏览器所做的那样)。
$ curl -i qwasf-34234.herokussl.com -H "Host: www.this-site.com"
您无法访问 Heroku 给您的qwasf-34234.herokussl.com
域。相反,您应该更改DNS以将其指向CNAME,而不是qwasf-34234.herokuapp.com
。