本帖最后由 论坛管理员 于 2022-6-14 09:30 编辑
onlyoffice在o2oa下安装部署后,https模式下可以正常预览,为了安全起见,决定启用https模式,于是按照官方文档(https://www.o2oa.net/course/lz2heo.html)的介绍,采用了自签名证书的模式,后来发现onlyoffice在https模式下不能使用了,折腾整整5天时间,查阅了大量文章,发现官方发布的试用版本中,在https模式下也无法预览,官方相关文档和论支坛也未提到类似问题,于是总结如下。 (今天是2022年3月8日,女同胞们的日子,问题得以解决,很开心哦! ) 废话少说,现将出现的问题及解决办法总结如下: 一、解决o2oa与onlyoffice访问时出现的Mix Content问题 二、继续解决onlyoffice在预览文件时提示“下载失败”问题 原因1:SSL 认证之后,request.getScheme()获取不到https的问题记录 通过如下命令进入onlyoffice容器 #docker exec -it onlyoffice容器ID bash 通过如下命令查看onlyoffice的日志 #find / -name out.log /var/log/onlyoffice/documentserver/converter/out.log /var/log/onlyoffice/documentserver/docservice/out.log /var/log/onlyoffice/documentserver/spellchecker/out.log /var/log/onlyoffice/documentserver/metrics/out.log /var/log/onlyoffice/documentserver/gc/out.log #cat /var/log/onlyoffice/documentserver/docservice/out.log 发现'http://xxx.xxx.xxx:20020/xxxx' 这是问题的关键所在,原因是SSL 认证之后,request.getScheme()获取不到https的问题记录(参见文章https://www.cnblogs.com/start-fxw/p/7890337.html),我只参考了该文章的原因,具体解决办法是修改: xxx/o2server/servers/applicationServer/work/x_onlyofficefile_assemble_control/WEB-INF/classes/com/x/onlyofficefile/assemble/control/jaxrs/onlyoffice/utility/DocumentManager.class的源码DocumentManager.java,DocumentManager.java源码路径:xxxx\o2server\servers\applicationServer\work\x_onlyofficefile_assemble_control\describe\sources\com\x\onlyofficefile\assemble\control\jaxrs\onlyoffice\utility\DocumentManager.java 将所有 request.getScheme()修改为字符串 “https”,在eclipse中重新导出DocumentManager.class即可。 原因2:docker node js无法对客户端自签名证书进行认证 解决办法:关闭客户端证书认证 (1)进入onlyoffice容器并修改onlyoffice的default.json文件 docker exec -it 容器ID bash 通过如下命令修改default.json文件,将"rejectUnauthorized"修改为false #vim /etc/onlyoffice/documentserver/default.json "requestDefaults": { "headers": { "User-Agent": "Node.js/6.13" }, "rejectUnauthorized": false } 注意:如下onlyoffice容器内无法使用vim命令,可尝试#apt-get update 然后 #apt-get install vim 如果仍然不行,可通过docker cp将容器内的default.json复制到linux宿主机修改后复制回去。 (2)重启onlyoffice的docker容器,使配置生效 docker restart 容器ID 还有一个问题需手动处理,在浏览器中,onlyoffice的api.js文件无法自动加载,需要访问网址 https://xxx.xxx.xxx:xx/web-apps/apps/api/documents/api.js进行手动加载。 (3)onlyoffice容器无法访问onlyoffice的https网址 总之,采用自签名证书的优点是免费,但也会带来一些意想不到的问题,证书的签发时间可以比商业授权的长得多,但安全性相对较低,有条件建议购买商业证书。 最后,o2oa的开源精神值得点赞,但开源不等于免费,建议有需求的客户购买其官方服务,毕竟专业的人干专业的事,尊重知识,支持原创,并非任何问题都能靠一已之力解决。
|