架站的問題層出不窮,完整流程可以看這篇<WordPress+Google Cloud Platform架站心得>。
有時候就連簡單申請一個SSL Certificate的問題都可以很多。
而且明明很多網絡教學簡單輸入指令就可以完成輕鬆完成:
sudo certbot – apache
換成自家的SEVER問題就是特別多,於是只好到處尋找解答,Bitnami的說明文件有很多解答,但真的需要一定的程度才能解讀出來,於是我參考了很多不同網站,其中Charles Note寫得最清楚,不過硬copy指令仍然有些問題,我相信不是Charles Note解釋得不好,而是專業人士很多時候會容易忽略了初學者水平真的沒有很高,下面我們一步一步來做,不會太難。
安裝Bitnami HTTPS Configuration Tool
先到google platform控制台的虛擬機器(VM)執行個體裡面(在搜尋欄輸入VM就會出現)->連線ssh,然後輸入以下指令
sudo /opt/bitnami/bncert-tool
- cd /tmp
- curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d ‘”‘ -f 4 | wget -i –
- ls
- tar xf lego_vX.Y.Z_linux_amd64.tar.gz
- sudo mkdir -p /opt/bitnami/letsencrypt
- sudo mv lego /opt/bitnami/letsencrypt/lego
- sudo /opt/bitnami/ctlscript.sh stop
- sudo /opt/bitnami/letsencrypt/lego –tls –email=”EMAIL-ADDRESS” –domains=”DOMAIN” –domains=”www.DOMAIN” –path=”/opt/bitnami/letsencrypt” run
這些指令是什麼意思呢?
1. cd /tmp 將現在路徑轉到/tmp
2. cur1 –Ls https://api…… 下載檔案至tmp這個地方
3.輸入指令ls 查看下載檔案的版本xyz是什麼?
4.tar xf lego……解壓lego..檔,如果xf解不出來,xf換成xzvf試試,會有一個叫做lego的檔解出來。
5.sudo mkdir -p /opt… 建立一個檔案
6.sudo mv lego ….將解壓出來的lego檔案丟到 /opt/bitnami/letsencrypt/…的地方
7.關掉bitnami服務
8.為你的domain申請一個certificate,在EMAIL” “裡面換成你的EMAIL,Domains “ ”裡面換成你的網址,你要申請多一個就多加一個 –domains=”你的網址”
完成後在/opt/bitnami/letsencrypt/裡面生成了四個檔案,檔名是你的第一個domain name:
- CRT 憑證,也就是 public key: DOMAIN.com.crt
- Private key: DOMAIN.com.key
- 以及另外兩個憑證簽發相關的金鑰與資訊:DOMAIN.com.issuer.crt、DOMAIN.com.json
將預設的SSL Certificate憑證位置重新指向至新的憑證
由於 Bitnami 原本就有設定好 SSL 憑證的路徑:
/opt/bitnami/apache2/conf/server.crt
/opt/bitnami/apache2/conf/server.key
這個部份我發現有一個路徑問題,每個人預設檔案的具體位置不一定就是這樣,我一開始試了很多次才發現這個問題,如果以後找其它解答的時候也一樣,要先去找出你自己檔案的具體位置,如預設的憑證位置不一定在/opt/bitnami/apache2/conf……裡面,要輸入以下指令去查看具體位置。
sudo find / -name “sever.key”
再將預設的憑證位置指向新的憑證
- sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt.old
- sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.key /opt/bitnami/apache2/conf/bitnami/certs/server.key.old
- sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/apache2/conf/bitnami/certs/server.key
- sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt
- sudo chown root:root /opt/bitnami/apache2/conf/bitnami/certs/server*
- sudo chmod 600 /opt/bitnami/apache2/conf/bitnami/certs/server*
預設憑證的路徑改成你剛才查出來的具體位置,生成的憑證應該會一樣。
1.+2. Sudo mv 預設憑證改名字,加上副檔名old。
3.+4. 兩個鏈結 (link) 從預設的位置指向 Lego 生成的位置。
5.+6. 設定憑證相關檔案的權限,只有 root user 可以存取,安全性問題。
這樣一步一步做下來就可以了,而且手動操作會更了解這個流程。
使用 crontab 排程,自動更新憑證設定
為了不用每三個月操作一次,我們可以設定排程。
要先建立一個路徑, 再產生一個叫renew-certificate.sh的檔案。
sudo mkdir -p /opt/bitnami/letsencrypt/scripts/
sudo nano /opt/bitnami/letsencrypt/scripts/renew-certificate.sh
打開renew-certificate.sh,在裡面輸入以下指令,再按Ctrl+o儲存,再Ctrl+x退出。
#!/bin/bash sudo /opt/bitnami/ctlscript.sh stop apache
sudo /opt/bitnami/letsencrypt/lego –tls –email=”EMAIL-ADDRESS” –domains=”DOMAIN” –path=”/opt/bitnami/letsencrypt” renew –days 90
sudo /opt/bitnami/ctlscript.sh start apache
同樣的,記得要把 email 和 domain name 換成你自己的,如果有多個 domain 一樣自行加入 --domains="你的domain.com"
參數即可。
sudo su –
回到root層面
chmod +x /opt/bitnami/letsencrypt/scripts/renew-certificate.sh
開啓腳本可被執行的權限
sudo crontab -e
開啓crontab,有1、2、3的選項,我選了1,然後在裡面輸入以下指令,再按Ctrl+o儲存,再Ctrl+x退出。
0 0 1 * * /opt/bitnami/letsencrypt/scripts/renew-certificate.sh 1>> /opt/bitnami/letsencrypt/logs/renew-log 2>> /opt/bitnami/letsencrypt/logs/renew-error