飞牛

证书问题

虽然飞牛官方提供了两个证书,但是这不是很实用。甚至为了安全性,都不开启FNID。

目前免费的更多的是使用 acme.sh申请的免费证书。

具体的安装和实用过程如下:

curl https://get.acme.sh | sh -s email=my@example.com

申请证书:

export DP_Id=xxxx
export DP_Key=xxxxxxxx
acme.sh --issue --dns dns_dp -d example.com -d *.example.com

查看证书安装位置:

cat /usr/trim/etc/network_gateway_cert.conf

注意填写

部署证书&重启服务:

acme.sh --install-cert -d example.com --fullchain-file /home/admin/ssl/example.com.crt --key-file /home/admin/ssl/example.com.key \
        --reloadcmd "sudo bash /home/admin/ssl/update_cert.sh"

其中,配置 update_cert.sh 如下:

CERT_NAME="example.com"
CERT_PATH="/usr/trim/var/trim_connect/ssls/xxx"

sudo cp /home/admin/ssl/example.com.crt $CERT_PATH/example.com/xxx/example.com.crt
sudo cp /home/admin/ssl/example.com.key /usr/trim/var/trim_connect/ssls/example.com/xxx/example.com.key

NEW_EXPIRY_DATE=$(openssl x509 -enddate -noout -in "$CERT_PATH/$CERT_NAME.crt" | sed "s/^.*=\(.*\)$/\1/")
NEW_EXPIRY_TIMESTAMP=$(date -d "$NEW_EXPIRY_DATE" +%s%3N)  # 获取毫秒级时间戳
echo "新证书的有效期到: $NEW_EXPIRY_DATE"

sudo systemctl restart webdav.service smbftpd.service trim_nginx.service
psql -U postgres -d trim_connect -c "UPDATE cert SET valid_to=$NEW_EXPIRY_TIMESTAMP WHERE domain='$CERT_NAME'"
echo "服务已更新"

使用traefik替换默认的转发

  1. 关闭系统设置-安全性-端口设置-高级设置-重定向。

  2. 设置traefik的转发功能

tls:
  certificates:
    - certFile: /ssl/xxx.xxxx.xxxxx.crt
      keyFile: /ssl/xxx.xxxx.xxxxx.key

http:
  routers:
    # 针对80端口的路由器,直接返回重定向
    router-http:
      rule: "Host(`xxx.xxxx.xxxxx`)"
      entryPoints:
        - web
      middlewares:
        - redirect-http
      service: dummy-service

    router-https:
      rule: "Host(`xxx.xxxx.xxxxx`)"
      tls: true
      entryPoints:
        - websecure
      middlewares:
        - redirect-https
      service: dummy-service


  middlewares:
    # 针对HTTP请求的重定向,将端口改为5666
    redirect-http:
      redirectRegex:
        redirectRegex:
        regex: "^https?://xxx\\.xxxx\\.xxxxx(.*)$"
        replacement: "http://xxx.xxxx.xxxxx:5666$1"
        permanent: true

    # 针对HTTPS请求的重定向,将端口改为5667
    redirect-https:
      redirectRegex:
        regex: "^https://xxx\\.xxxx\\.xxxxx(.*)$"
        replacement: "https://xxx.xxxx.xxxxx:5667$1"
        permanent: true

  services:
    dummy-service:
      loadBalancer:
        servers:
          - url: "https://xxx.xxxx.xxxxx:5667"  # 无实际请求意义

参考资料

  1. https://github.com/lfgyx/fnos_certificate_update/blob/main/src/update_cert.sh

  2. https://club.fnnas.com/forum.php?mod=viewthread&tid=6890

Zotero

数据与文件的同步