禅道配置https访问
背景
接上一篇文章(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 --issue --dns -d mydomain.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please
这里会验证这个域名是否真的属于你,需要在你的域名控制台加入TXT解析
我的阿里云域名控制台:
执行命令,注意:这里是--renew:
acme.sh --renew -d mydomain.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才能验证通过