如何申請免費SSL?又要怎麼安裝SSL?(以SSL For Free – Let’s Encrypt為例)
本篇教學會以SSL For Free提供的免費SSL憑證作為範例!
我的網站好端端的,又沒有在做任何金流服務,為什麼硬是要去申請一個SSL讓網站從http變成https?
原因是Google預計從Chrome 62開始,凡事要要求填寫資料的http網站,全部都會被標上『不安全』字樣!
相關新聞:iThome: 自Chrome 62起,所有需填資料的HTTP網頁都會被標示為「不安全」
誰希望自己的網站被標上『不安全』呢?本篇介紹的是手動申請的方法,全自動更新的方法如下列連結:
如何使用certbot自動更新SSL憑證 (CentOS 7, CentOS 6, Ubuntu)
到SSL For Free申請帳號,方便日後管理SSL憑證到期日。
SSL For Free
在SSL For Free網站首頁紅框的位置填入你想申請SSL的Domain Name,
填好之後,右邊『Create Free SSL Certificate』的綠色按鈕給他按下去!
範例:以本站來說,就是填入『www.brilliantcode.net』就夠了!
恭喜,此時此刻的你已經完成整個申請程序的30%!
選擇手動驗證『Manual Verification』
過一下子,網頁下方會出現一堆新的內容,大致上是手動驗證的步驟。
在你要申請SSL的網域的根目錄建立兩層資料夾
/根目錄/.well-known/acme-challenge/
本步驟,要下載驗證檔,並且放置在上一步驟的路徑裡面!
點選下載驗證檔案『Download File #1』
(如果填寫的網域名稱是www.aaa.aaa,會有2個檔案需要下載)
將檔案放入剛才建立的目錄裡面!
/根目錄/.well-known/acme-challenge/
要怎麼把檔案放進去?
方法一:使用擁有足夠權限的帳號,透過FTP把檔案放進去。
(如果你的站台本來就沒有架設FTP站台,不建議因此倉促架設!)
方法二:用vim把檔案建立到那個目錄裡面!再把檔案內容寫進去就好了!
1 |
[andy@www ~]$ sudo vim /網站根目錄/.well-know/acme-challenge/PExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
存檔離開
點選連結2試試看,能不能看得到檔案內容?
看得到內容就可以進行下一步驟!
如果是『Permission Denied』則要注意一下是否有將權限開放給apache的執行帳號!
按下『Download SSL Certificate』,SSL For Free會自動幫你驗證、並產生你的SSL憑證!
如果按下之後看到的畫面跟下圖不一樣,建議還是去查一下Apache error_log,看到底哪裡出問題了!
網頁畫面可以直接預覽3個檔案的內容。
網頁再往下捲一些,可以看到一個下載所有檔案的按鈕!『Download All SSL Certificate Files』
網頁預覽內容對應到下載的檔案、再分別對應到Apache ssl.conf設定檔參數的對照表如下:
網頁預覽內容 | 全部下載的檔名 | Apache ssl.conf設定檔參數 |
CA Bundle | ca_bundle.crt | SSLCACertificateFile |
Certificate | certificate.crt | SSLCertificateFile |
Private Key | private.key | SSLCertificateKeyFile |
這3個檔案也要放到伺服器裡面!
(CentOS 7 預設路徑/etc/pki/tls/certs/)
修改Apache SSL設定檔
對照上一步驟的表格,搜尋參數名稱『SSLCACertificateFile』、『SSLCertificateFile』、『SSLCertificateKeyFile』,並且修改憑證檔路徑!
1 |
[andy@www ~]$ sudo vim /etc/httpd/conf.d/ssl.conf |
可能要順便注意的參數名稱:『ServerName』、『ServerAlias』、『DocumentRoot』、『SSLEngine』、『SSLProtocol』、『SSLCipherSuite』、『<Directory /xxx/xxx>』
修改完畢就存檔離開
修改httpd.conf,強制http自動導向https
1 |
[andy@www ~]$ sudo vim /etc/httpd/conf/httpd.conf |
找到你的站台,在這次要申請SSL的站台的這定區塊裡面加入以下設定
1 2 3 |
RewriteEngine On RewriteCond %{SERVER_NAME} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R] |
重啟Apache(httpd)
1 |
[andy@www ~]$ sudo systemctl restart httpd |
大功告成
以Firefox瀏覽看看
點一下左邊的灰色驚嘆號,可以看到『安全連線』的字樣!
點一下『>』向右箭頭,可以看見『驗證機構』!
用Chrome開起來看看
綠色的『安全』字樣,這就是我們要的!
Chrome要怎麼看發證機構?
Developer Tools > Security (頁籤) > View certificate (按鈕)
找到你的站台,在這次要申請SSL的站台的這定區塊裡面加入以下設定…..
RewriteEngine On
RewriteCond %{SERVER_NAME} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]
—————————————————————————————————————
不好意思,做到只差最後一步,不知以上這段應該貼httpd.conf的哪裡?
像是如果我的站台下架了好幾個站,就會用VirtualHost來區隔!
以VirtualHost來說的話就會像下面那樣:
<VirtualHost *:80>
DocumentRoot "xxxxx"
ServerName www.brilliantcode.net
ServerAlias www.brilliantcode.net brilliantcode.net
ErrorLog "xxxxx"
<Directory /xxxxx/xx/xxx/>
... xxx ...
</Directory>
#加在這
RewriteEngine On
RewriteCond %{SERVER_NAME} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>
若是只有一個站台,那就要找到設定『網站根目錄的資料夾權限』或是設定『網站根目錄』的地方,把RewriteEngine那幾個設定就放在上述其中一個設定的後面!
(這樣才不會忘了放在哪 😀 )
#網站根目錄
DocumentRoot "網站根目錄"
#網站根目錄資料夾權限
<Directory /網站根目錄/>
... xxx ...
</Directory>
#加在這
RewriteEngine On
RewriteCond %{SERVER_NAME} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]
博主你好!這個SSL憑證申請有效期90天,請問如何續期呢?
Hi 小小,
你可以參考 Certbot 這個套件,這個小程式安裝在伺服器上可以幫你更新SSL,然而你可以設定程式每隔60天自動執行一次,這樣就可以達到自動續期的效果了。
關於Certbot的用法可以參考這篇文章的做法:https://www.brilliantcode.net/941/how-to-renew-ssl-certificates-automatically-by-certbot/
如果伺服器不是Linux,可能就需要再尋找其他辦法。
或者你也可以將Domain Name交給Cloudflare管理,這個業者有提供免費的SSL。設定上也蠻容易的,你可以參考這篇文章:免費資源網路社群-讓 Cloudflare 成為免費 DNS 代管,不開啟 CDN 或 WAF 加速防護功能
你好
請問我點選中間的手動驗證,他會出現”錯誤,請嘗試使用附近的驗證頁面頂部的鏈接再生您的帳戶。如果不工作,那麼請聯繫我們進行修正:”,並無法下載驗證的檔案,這個問題,我該如何繼續呢?
麻煩您提供系統回應你的原文給我,你貼上的訊息看起來很像是經過翻譯的內容,有點不太明白它的意思。
英文 “Error please try regenerating your account by using the link near the top of the verification page. If that does not work then please contact us for a fix:”
謝謝你的回答。
Pingback:如何使用certbot自動更新SSL憑證 (CentOS 6,7,8, Ubuntu) - BrilliantCode.net
Pingback:CentOS 7 架站教學彙整 (Apache 2.4 + MySQL 5.7 + php 7 + phpMyAdmin + SSH + sFTP) - BrilliantCode.net