禅道配置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才能验证通过

posted @ 2022-04-01 17:49  猫与鱼11  阅读(2836)  评论(0编辑  收藏  举报