背景
接上一篇文章(https://www.cnblogs.com/cat-fish-h2/p/16044224.html)留下的坑,這次講講禪道如何配置https訪問,什么是https?點我
下載證書
我使用是的Let's Encrypt的免費證書,Let’s Encrypt 是一家免費、開放、自動化的證書頒發機構(CA),為公眾的利益而運行。 它是一項由 Internet Security Research Group (ISRG) 提供的服務。Let’s Encrypt官網
Let's Encrypt官方推薦的客戶端工具Certbot用起來有點繁瑣,比較麻煩,需要依賴Python環境,這里用的是另外一個客戶端工具acme.sh,這個比起Certbot來不用依賴Python環境,而且使用和安裝都比較簡潔,比較推薦。acme.sh相關說明
安裝acme.sh
curl https://get.acme.sh | sh -s email=your@example.com
出現下圖表示安裝成功
生成證書
acme.sh 提供了http方式和DNS方式生成,這里選擇的是DNS,執行命令:
acme.sh --renew -d yourdomain.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please
這里會驗證這個域名是否真的屬於你,需要在你的域名控制台加入TXT解析
我的阿里雲域名控制台:
執行命令,注意這里是--renew:
acme.sh --renew -d yourdomain.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please
執行成功后,acme.sh默認下載下來的證書是放在家目錄,下的.acme.sh/yourdomain.com下的
我們不能直接用這個目錄下的證書文件,這個目錄是給acme.sh程序內部使用的,目錄可能會變,應該拷貝到對應應用目錄下,我這里是直接在禪道/opt/zbox/etc/下新建了ssl目錄
拷貝命令:
cp -r /root/.acme.sh/pms.catwithfish.cn/* /opt/zbox/etc/ssl
配置禪道
因為禪道用的是apache服務器,我們直接修改apache配置,我用的禪道linux一鍵安裝包,路徑在/opt/zbox/etc/apache/httpd.conf
修改的地方有兩處,新增Listen 443
新增443相關配置:
<VirtualHost *:443>
ServerAdmin zentao@local.net
DocumentRoot "/opt/zbox/app/zentao/www/"
ServerName localhost
# ServerAlias *.xxx.com
SSLEngine On
SSLCertificateFile /opt/zbox/etc/ssl/pms.catwithfish.cn.cer
SSLCertificateKeyFile /opt/zbox/etc/ssl/pms.catwithfish.cn.key
SSLCertificateChainFile /opt/zbox/etc/ssl/fullchain.cer
<Directory "/opt/zbox/app/zentaoep/www">
AllowOverride all
Require all granted
</Directory>
ErrorLog "/opt/zbox/logs/apache_error_log"
CustomLog "/opt/zbox/logs/apache_access_log" combind
</VirtualHost>
保存退出vim編輯器,重啟禪道
/opt/zbox/zbox restart
至此,通過域名就可以實現https訪問禪道了,谷歌瀏覽器也不會提示非安全連接了
遇到的問題
1、在安裝acme.sh的時候出現Failed to connect to raw.githubusercontent.com port 443: Connection refused問題應該如何解決?
答:原因:發現是 github 的一些域名的 DNS 解析被污染,導致DNS 解析過程無法通過域名取得正確的IP地址。可以通過修改/etc/hosts
文件可解決該問題。
1》打開 https://www.ipaddress.com/ 輸入訪問不了的域名,獲得對應的IP。
2》使用vim /etc/hosts命令打開不能訪問的機器的hosts文件,添加如下內容:
199.232.68.133 raw.githubusercontent.com
199.232.68.133 user-images.githubusercontent.com
199.232.68.133 avatars2.githubusercontent.com
199.232.68.133 avatars1.githubusercontent.com
注:上面內容中199.232.68.133是raw.githubusercontent.com所在的服務器IP(通過 https://www.ipaddress.com/ 獲知)。
3》保存該文件,再使用即可正常訪問。
參考:https://blog.csdn.net/donaldsy/article/details/107482368
2、在安裝完acme.sh的時候發現acme.sh --version不能使用,為什么?
答:需要重新打開你的terminal,重新打開之后會正常
3、如下圖超時,Processing, The CA is processing your order, please just wait. (2/30)超時如何處理?
答: acme.sh --set-default-ca --server letsencrypt
這個命令的意思是:acme.sh默認是用的CA提供商是ZeroSSL,而ZeroSSL的服務極其不穩定。
當前acme.sh使用的默認CA機構為zeroSSL,通過--set-default-ca命令,可以修改默認的CA機構,該命令使用--server參數來指定CA機構名稱。
切換默認CA為Let's Encrypt:
acme.sh --set-default-ca --server zerossl
4、如下圖鏈接出錯,example.com:Verify error:Fetching http://example.com/.well-known/acme-challenge/QM5V1A3LcxZXr12_5gY3Uh1zh1p-7UARBMLhkK_OxKg: Connection refused 這個問題應該如何解決?
答:
1》、檢查80端口是否被占用
2》、檢查防火牆
3》、socat有沒有安裝以及有沒有端口權限
4》、--webroot 路徑是否有權限
5、如下圖速率限制錯誤,too many failed authorizations recently應該如何處理?
答:這個是let's encrypt的速率限制,貌似沒有其他辦法,只能等來它取消限制,參考:https://letsencrypt.org/zh-cn/docs/rate-limits/
6、如下圖TXT解析錯誤,Verify error:DNS problem: NXDOMAIN looking up TXT for 應該如何處理?
答:請仔細看生成的TXT驗證的描述
必須要域名和TXT解析值都要對應上acme.sh才能驗證通過