自己 Heroku 的 app 域名是開始 SSL 的,可是由於他的域名爲 appname.herokuapp.com,沒有在國內備案,因此咱們須要綁定一個國內備案的域名到 Heroku 上面。因而就有了下面的文章。html
能夠直接使用一些服務商購買域名 SSL 證書,或者用其餘的方式本身生成。下面咱們講解一下怎麼生成。node
系統 | 安裝方式 |
---|---|
Mac OS X | Homebrew: brew install openssl |
Windows | Windows complete package .exe installer |
Ubuntu Linux | apt-get install openssl |
Heroku 只支持 RSA,下面咱們直接運行命令web
openssl genrsa -des3 -out server.pass.key 2048
輸入以下命令獲取server.key
bash
openssl rsa -in server.pass.key -out server.key
CSR是證書籤名請求,須要使用上一步生成的私有 Key 進行生成。這個時候須要輸入 Country Name 和 Common Name,格式以下服務器
字段 | 內容 |
---|---|
Country Name | ISO 3166 格式的簡碼 |
Common Name | www.example.com,*.example.com 須要注意的是這個名字必須和使用的保持一致 |
輸入以下命令生成 CSR微信
openssl req -nodes -new -key server.key -out server.csr
CRT 通常都是找簽發 SSL 的機構簽發,大部分是收費的,也有免費的,若是不找 SSL 機構簽發,能夠按照下面的方式本身生成,不過本身生成的證書可使用,只是默認是不信任的,須要用戶本身認證。一般狀況生成的證書爲 CRT 或者 PEM格式的。app
openssl req -new -x509 -key server.key -out ca.crt -days 3650
這個證書用來給本身的證書籤名,下面是建立服務器證書dom
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
筆者購買的是阿里雲的域名,其默認支持生成3個免費的域名,並且使用他的生成,默認是信任的。直接經過阿里雲控制檯生成而後下載使用便可,能夠省略上面的步驟。curl
heroku addons:create ssl:endpoint
heroku certs:add server.crt server.key --type endpoint
運行完命令會爲你分配一個新的 SSL 域名,須要你後面作綁定使用。ui
appname now served by iiii-65701.herokussl.com
若是後面更新了證書,可使用以下命令修改證書。
heroku certs:update server.crt server.key --endpoint example-2121.herokussl.com
直接使用以下命令配置剛纔你輸入的域名
heroku domains:add www.example.com
若是是配置域名,更多詳情能夠參照
Heroku 教程:綁定自定義域名
這個時候須要配置一下 DNS 建立一個 CNAME 指向 Heroku,這個時候就須要指向到咱們剛纔生成的,iiii-65701.herokussl.com
。
等待一下子之後可使用以下命令檢測一下是否配置成功
curl -kvI https://www.example.com * About to connect() to www.example.com port 443 (#0) * Trying 50.16.234.21... connected * Connected to www.example.com (50.16.234.21) port 443 (#0) * SSLv3, TLS handshake, Client hello (1): * SSLv3, TLS handshake, Server hello (2): * SSLv3, TLS handshake, CERT (11): * SSLv3, TLS handshake, Server finished (14): * SSLv3, TLS handshake, Client key exchange (16): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSL connection using AES256-SHA * Server certificate: * subject: C=US; ST=CA; L=SF; O=SFDC; OU=Heroku; CN=www.example.com * start date: 2011-11-01 17:18:11 GMT * expire date: 2012-10-31 17:18:11 GMT * common name: www.example.com (matched) * issuer: C=US; ST=CA; L=SF; O=SFDC; OU=Heroku; CN=www.heroku.com * SSL certificate verify ok. GET / HTTP/1.1 User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8r zlib/1.2.3 Host: www.example.com Accept: */* ...
本文做者麻醬
,歡迎討論,指正和轉載,轉載請註明出處。
若是興趣能夠關注做者微信訂閱號:碼匠筆記