現場(環境):CentOS 7.3 使用:Let’s Encrypt
原因:
近年大家越來越重視資訊安全的問題,
以前常在用的http這類沒有SSL加密的網站,
已經逐漸被大家以及瀏覽器列為較不安全的網站。
買憑證現在也很方便,
只是金額對於部份開發測試階段的人來說還是有點負擔。
或者網站只是臨時性的活動網站,但要花錢買SSL憑證。
這是很多現在企業的矛盾。
Let’s Encrypt出現很多年,現在也有許多人正在使用它。
它不需要你額外付費,就可以申請SSL憑證來使用,
雖然每3個月要更新一次憑證,但也有很多放是可以讓它自動更新。
比較可惜的是,因為不需付費及便利性,
被部份有心人士拿來做惡意的行為。
而這就是資訊安全&Let’s Encrypt的相乎拉扯的點。
Let’s Encrypt的初衷就是創造一個都是SSL憑證加密的網站。
所以我們開始來實作看看。
處理方式:
方法有兩種
(1) 透過Linux執行
(2) 透過Web版執行
今天我們先介紹第一種,透過Linux執行。
Step 1. 首先我們要先下載git & CentOS更新
#yum install git epel-release -y
Step 2. 下載執行Let’s Encrypt所需套件。
#yum install gcc libffi-devel python-devel openssl-devel -y
Step 3. 到github上將let’s encrypt提供的執行包抓回來。
# git clone https://github.com/letsencrypt/letsencrypt
(2018/03/09測試。網址有更改)
# git clone https://github.com/certbot/certbot
在瀏覽器連結下列網址一樣會導到新網址。
https://github.com/letsencrypt/letsencrypt
Step 4. 執行
這邊要依據你將執行包下載回來的位置進行切換
#cd /root/letsencrypt
(2018/03/09測試)
#cd /root/cerbot
# ./letsencrypt-auto certonly -a standalone -d [網域名稱]
範例: # ./letsencrypt-auto certonly -a standalone -d www.test.com
執行的時候還會幫你安裝需多套件。
執行時,要輸入E-mail。
這很重要,因為我們的SSL憑證 3個月後會過期。
這邊的E-Mail就是到時候要通知到我們的哪個E-Mail。
因為途中遇到一些錯誤(錯誤的解決方法有放在最後),
所已又再次重新申請,完整申請的狀態大概會如下:
//這一次就沒有再問你E-mail部份的問題了
Step 5. 執行完成後可以看到憑證放在哪裡
總共會有4個檔案
檔案都會位在/etc/letsencrypt/live 之下,
會以網域名稱做資料夾進行區分。
檔案有公鑰cert.pem / 私鑰 privkey.pem / chain chain.pen
以及 fullchain.pem。
到時候就是分別放到WEB服務器當中就可以了。
Apache設定部份可以參考我的另一篇網誌
IT事件簿 – Apache 服務要加上SSL
SSLCertificateFile /etc/httpd/SSL/憑證.crt //公鑰文件
SSLCertificateKeyFile /etc/httpd/SSL/憑證.key //私鑰文件
SSLCertificateChainFile //中級憑證
這三隻檔案就是對應到 cert.pem / 私鑰 privkey.pem / chain chain.pen
設定完成後,服務重啟就可以了。
憑證申請就到這邊,
SSL憑證更新& 自動更新部份我們留在下一次說。
後記:
錯誤訊息1:
在做let’s encrypt的時候。你的WEB端一定要是關閉的。
不然會出現下列的錯誤訊息。
Problem binding to port 80: Could not bind to IPv4 or IPv6.
關閉後再次申請憑證就好了。
錯誤訊息2:
你申請的域名現在還沒有對應到IP位址。
Failed authorization procedure. [網域] (http-01):
urn:acme:error:unknownHost :: The server could not resolve
a domain name :: No valid IP addresses found for [網域]
這就是要注意一下你是否名稱打錯了,
或者真的是你的網域對應到IP位址還沒有生效。
<本篇完>