dsh/mailgo:caddy-cert-hot-reload
main
域名编辑页私钥输入框提示“留空则保留现有私钥”,但保存时报错 TLS 私钥和公钥证书必须同时填写。
TLS 私钥和公钥证书必须同时填写
浏览器提交 textarea 时会把换行规范为 CRLF,而证书文件(尤其是一键从 Caddy 导入的)是 LF,导致 readTLSCert(...) == publicCert 的“证书未修改”比较失效——证书实际没变、私钥留空时,代码误判为“只填了证书没填私钥”。
readTLSCert(...) == publicCert
handleDomainTLSUpdate
normalizePEM
admin_tls_test.go
浏览器提交 textarea 会把换行规范为 CRLF,而证书文件(尤其是一键从 Caddy 导入的)是 LF,导致“证书未修改”的比较失效,私钥留空(保留 现有私钥)时误报必须同时填写。 - handleDomainTLSUpdate 增加 normalizePEM:提交值与磁盘文件统一 归一化为 LF 后再比较/写入 - 新增 3 个回归测试:CRLF 提交证书未变+私钥留空、CRLF 新证书对 保存为 LF、证书已变但私钥留空仍应报错
No dependencies set.
The note is not visible to the blocked user.
问题
域名编辑页私钥输入框提示“留空则保留现有私钥”,但保存时报错
TLS 私钥和公钥证书必须同时填写。原因
浏览器提交 textarea 时会把换行规范为 CRLF,而证书文件(尤其是一键从 Caddy 导入的)是 LF,导致
readTLSCert(...) == publicCert的“证书未修改”比较失效——证书实际没变、私钥留空时,代码误判为“只填了证书没填私钥”。修复
handleDomainTLSUpdate新增normalizePEM:提交值与磁盘文件统一归一化为 LF 后再比较/写入,兼容 CRLF/LF 混合场景admin_tls_test.go):验证