NGINX部署Nextcloud对接OnlyOffice出现unable to verify the first certificate错误
问题原因
你的问题由两个独立的问题叠加导致:
- Nginx配置的SSL证书仅包含域名证书,未包含EuropeanSSL的中间证书链,服务端返回的证书链不完整
- OnlyOffice Document Server基于NodeJS开发,NodeJS默认使用自带的根证书信任库,不会读取系统更新后的CA证书存储,因此你更新系统CA后wget正常但OnlyOffice仍然报错
解决方案
第一步:修复Nginx证书链配置
- 找到EuropeanSSL颁发给你的中间CA证书、根CA证书文件,将三个文件(域名证书、中间证书、根证书)按顺序合并到
/etc/nginx/ssl/xxx.com.crt中,顺序要求:- 你的*.xxx.com域名证书放在最前面
- 其次放EuropeanSSL Server CA 2中间证书
- 最后放EuropeanSSL根证书
- 执行
nginx -t验证配置无错后,执行systemctl restart nginx重启Nginx - 验证证书链完整性:执行
openssl s_client -connect cloud.xxx.com:443,确认返回结果中不再出现verify return code:21错误
第二步:适配OnlyOffice的NodeJS证书信任逻辑
二选一即可,优先选第一种,第二种仅推荐测试环境使用:
方案1:添加自定义CA证书到NodeJS信任链
- 将EuropeanSSL的根CA和中间CA证书合并为一个PEM文件,比如存为
/etc/onlyoffice/ca.pem,也可以直接指向你已经放到系统CA目录的证书文件 - 编辑OnlyOffice的systemd服务配置,添加环境变量
NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/xxx.com.crt,或者直接在/etc/onlyoffice/documentserver/local.json配置文件中指定可信CA路径 - 执行
systemctl daemon-reload重载服务配置,执行systemctl restart ds-*重启所有OnlyOffice服务
方案2(仅测试环境使用):关闭OnlyOffice的SSL证书验证
- 编辑
/etc/onlyoffice/documentserver/local.json,找到services.CoAuthoring.requestDefaults.rejectUnauthorized字段,将值改为false - 执行
systemctl restart ds-*重启所有OnlyOffice服务
验证
操作完成后回到Nextcloud的OnlyOffice应用设置页面,重新保存连接配置,确认不再弹出连接错误,查看OnlyOffice日志无证书相关报错即可。
内容的提问来源于stack exchange,提问作者safak93
相关产品推荐
相关产品推荐

