之前在centos上介紹過使用SSL加密的網頁伺服器設定方式,
當時用的是自我簽證的金鑰,所以在瀏覽器上會出現不安全的提示。
Let’s Encrypt 這是一個證書頒發機構,它提供與當前付費證書一樣安全的免費 SSL 證書。
Let’s Encrypt 是一個於 2015 年三季度推出的數位憑證認證機構,旨在以自動化流程消除手
動建立和安裝憑證的複雜流程,並推廣使全球資訊網伺服器的加密連接無所不在,為安全
網站提供免費的傳輸層安全性協定(TLS)憑證。
這適合有自己的網域的使用者,不用花錢購買商用憑證也不用每隔一兩年就要花錢更新憑證,
而又是合格合法的憑證,瀏覽器不會出現安全提示警告。
首先安裝 Let’s Encrypt 客戶端(Certbot),執行:
sudo apt update && sudo apt install certbot python3-certbot-apache
取得 SSL 憑證(Certificate)
Certbot 有一個 Apache 插件,可以自動安裝證書。
執行:
sudo certbot --apache
等出現以下訊息時輸入你的email address:
Enter email address (used for urgent renewal and security notices) (Enter 'c' tocancel):
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel:
按 a 和 ENTER 同意服務條款。
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o:2/3
按 n 和 ENTER 不與 Electronic Frontier Foundation 分享你的電子郵件地址。
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: bell.idv.tw
2: nextcloud.bell.idv.tw
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):
如果你的伺服器上已經配置了多個網域,你將在此處看到這些網域的列表。
這與你的DNS及apache 虛擬主機的設定有關。
Let’s Encrypt會檢查你的虛擬主機設定跟DNS的IP是否能正確mapping,可以正確對應的話才會
給正確的證書。
桉enter繼續。
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for test1.ui-code.com
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/test1.ui-code.com-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/test1.uicode.com-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/test1.ui-code.com-lessl.conf
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP
access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
桉1和enter,將不重導網頁到HTTPS,打HTTP://就是不加密。
按 2 和 ENTER 將所有流量重導向到 HTTPS。打HTTP://也會導到HTTPS://
Redirecting vhost in /etc/apache2/sites-enabled/test1.ui-code.com.conf to ssl
vhost in /etc/apache2/sites-available
/test1.ui-code.com-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://test1.ui-code.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=test1.ui-code.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
如果網址IP跟DNS設定是正確的,就會看到上面文字,已經生成金鑰憑證到你的伺服器上了。
可以到 https://www.ssllabs.com/ssltest/ 測試你的網域。正確的話會看到如下畫面:
由於 Let’s Encrypt 憑證在 90 天後到期,因此需要定期檢查它們是否續訂。 Certbot 將每
天自動運行兩次,並更新任何在 30 天內到期的證書。執行:
sudo certbot renew --dry-run
安裝好後要重新啟動apache2,執行:
sudo systemctl restart apache2
設定完後用 HTTPS進入 nextclud即可。
第二部分 自我認證
如果你沒有自己的網域,或只是用內網IP做實驗,還是可以用自我認證的金鑰進行加密,
但會出現這樣的警告訊息:
手動安裝憑證流程,先安裝openssl:
sudo apt-get install openssl
Apache 預設是沒有啟用 SSL 模組的,請用下面的指令來啟用。
sudo a2enmod ssl
請先用下面的指令來建立立要放憑證的資料夾,在下一個步驟會用到。
sudo mkdir /etc/apache2/ssl
請用下面的指令來產生憑證,-days 後面的參數365是憑證的有效日期,可以依需要自行調
整,-out 和 –keyout 是憑證和金鑰產出後要存放的路徑。
sudo openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key
會開始要你填一些資料,不正確其實也沒關係。
填完之後會產生金鑰key跟pem檔在 /etc/apache2/ssl 目錄下。
再來修改apache2的vhost相關設定,如果要全域通用,修改:
sudo nano /etc/apache2/sites-available/*000-default.conf
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
加入上述三行。存檔離開,重新啟動apache2:
sudo systemctl restart apache2
留言列表