2016-09-06 404 views

回答

7

創建證書

運行這些命令以獲得certbot-auto。 certbot-汽車應該在大多數系統

wget https://dl.eff.org/certbot-auto chmod 755 certbot-auto

工作時,此命令啓動讓你的證書的過程。 -d標誌允許您傳入您想要保護的域。或者,如果沒有-d標誌,它將彈出一個提示您輸入域的提示。

./certbot-auto certonly --manual -d app.yoursite.com

然後它會問你下面。不要打入。

Make sure your web server displays the following content at              
http://app.yoursite.com/.well-known/acme-challenge/SOME-LENGTHY-KEY before continuing: 

SOME-LONGER-KEY 

在您的public文件夾中創建目錄路徑。如果你沒有,創建一個。

mkdir -p public/.well-known/acme-challenge/

然後創建文件SOME-LENGTHY-KEY並將SOME-LONGER-KEY裏面

echo SOME-LONGER-KEY > public/.well-known/acme-challenge/SOME-LENGTHY-KEY

提交併推送這個改變你的Heroku應用。

git push heroku master

現在按回車鍵繼續驗證過程。您會收到類似這樣的消息

IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/app.yoursite.com/fullchain.pem. Your cert will expire on 2016-04-11. To obtain a new version of the certificate in the future, simply run Let's Encrypt again.

上傳證書

要上傳證書的Heroku,首先啓用SSL貝塔

heroku labs:enable http-sni -a your-app heroku plugins:install heroku-certs

添加您fullchain.pemprivkey.pem到Heroku。

sudo heroku _certs:add /etc/letsencrypt/live/app.yoursite.com/fullchain.pem /etc/letsencrypt/live/app.yoursite.com/privkey.pem

您可以驗證該證書與

heroku _certs:info

上傳更改您的DNS設置

更新您的DNS指向app.yoursite.com.herokudns.com

驗證SSL是工作

要檢查是否設置了SSL,請運行以下命令。 -v爲您提供了詳細的輸出。 -I僅顯示文檔信息。 -H將標頭傳遞給URL。我們傳遞的頭部確保緩存未被使用,並確保您獲得新證書而不是舊證書。

curl -vI https://app.yoursite.com -H "Cache-Control: no-cache"

檢查輸出包含以下

* Server certificate: * subject: C=US; ST=CA; L=SF; O=SFDC; OU=Heroku; CN=app.yoursite.com

如果subject行不包含CN=app.yoursite.com,等待5〜10分鐘,然後再試一次。如果是這樣,你幾乎可以走了。

讓流星特定更改

要完成這個過程,你會想你的ROOT_URL環境變量更改爲新的https版本。

heroku config:set ROOT_URL=https://app.yoursite.com

那麼你要確保你的用戶始終使用SSL與force-ssl

meteor add force-ssl

最後,如果你在你的應用程序設置任何的OAuth登錄( Facebook,Google等),您需要爲他們提供您的URL的新版本https

更新

運行certbot-auto再次

./certbot-auto certonly --manual -d app.yoursite.com

可能提示您輸入內容相同的同一端點。如果是這樣,只需按Enter即可。如果沒有,則需要重複上述步驟。

然後它會創建新的證書文件,這樣你就會上傳到Heroku的與

heroku certs:update /etc/letsencrypt/live/app.yoursite.com/fullchain.pem /etc/letsencrypt/live/app.yoursite.com/privkey.pem

然後確認,運行驗證SSL是工作以上命令

來源

+0

是的,這是一個測試版的功能,但它提供給任何人誰願意使用它。 https://blog.heroku.com/announcing_heroku_free_ssl_beta_and_flexible_dyno_hours – merlinpatt

+0

對不起,我不得不刪除我以前的評論,它有我的客戶名稱,它在這裏: 'heroku實驗室:啓用http-sni -a你的應用程序不爲每個人工作,因爲這是一個測試版功能。相反,您可以在'/ etc/letsencrypt/live/yourdomain.com /'文件夾中獲得'fullchain.pem'和'privkey.pem',並將它們手動添加到您的Heroku儀表板中 –

+0

我確認該命令對我無效,來自法國,我有一條消息說該功能不存在或不可用。其他一切工作完美,非常感謝這個答案:) –