andyzhshg / syno-acme

通过acme协议更新群晖HTTPS泛域名证书的自动脚本
MIT License
736 stars 258 forks source link

v0.3.0_dsm7_beta,DSM 7.0 测试版的中间证书相关问题(群晖版本:DSM 7.0-41890) #100

Open 570748428 opened 1 year ago

570748428 commented 1 year ago

问题1 部分客户端应用通过https访问WebDAV报错

问题详情: 使用SSL证书在线检测工具(https://csr.chinassl.net/ssl-checker.html)检测WebDAV Server端口(5006)报错:缺少中级证书Intermediate,请安装中级证书否则证书在部分浏览器中不受信任(此问题会导致Windows软件joplin无法访问webdav,其他软件如RaiDrive、安卓的ES文件浏览器没有问题)

问题原因: syno-acme申请Let's Encrypt证书会生成4个文件(cert.pem、fullchain.pem、privkey.pem、chain.pem),在复制给群晖使用时没有复制chain.pem,而群晖貌似更认可chain.pem而不是fullchain.pem(在群晖的控制面板>安全性>证书页面手动导入证书时,中间证书选择fullchain.pem会报错,选择chain.pem则通过。不过群晖的门户网站5006端口、CardDAV套件的8443端口貌似兼容了fullchain.pem,所有并没有报错,而WebDAV也只有部分软件报错)。

解决方式: crt_cp.py脚本的10行,把: CERT_FILES = [ 'cert.pem', 'privkey.pem', 'fullchain.pem' ] 改为: CERT_FILES = [ 'cert.pem', 'privkey.pem', 'chain.pem', 'fullchain.pem' ]

相关情况说明: cert.pem是证书 chain.pem是证书链编码 fullchain.pem是cert.pem和chain.pem的证书集合 privkey.pem是私钥文件

lim0513 commented 1 year ago

我记得群晖的中间证书好像是可选的,可以不导入吧。。。

570748428 commented 1 year ago

我记得群晖的中间证书好像是可选的,可以不导入吧。。。

群晖的中间证书可以不导入,但是有的应用需要验证中间证书,有的应用没有中间证书也能过。所以我这里也是有的软件报错,有的软件可以正常使用。

我表达的重点是:fullchain.pem包含chain.pem的全部信息,群晖兼容一下fullchain.pem会更好。或者至少内部统一一下,现在看到的情况是,导入证书页面、WebDAV组件不兼容fullchain.pem;门户网站5006端口、CardDAV套件的8443端口兼容了fullchain.pem,这样会给排查问题增加迷惑性。