解决O2OA自签名证书后onlyoffice无法预览及保存文件问题
onlyoffice在o2oa下安装部署后,https模式下可以正常预览。为了安全起见,决定启用https模式,于是按照官方文档(https://www.o2oa.net/course/lz2heo.html)的介绍,采用了自签名证书的模式,后来发现onlyoffice在https模式下不能使用了,折腾整整5天时间,查阅了大量文章,发现官方发布的试用版本中,在https模式下也无法预览,官方相关文档和论支坛也未提到类似问题,于是总结如下。
(今天是2022年3月8日,女同胞们的日子,问题得以解决,很开心哦!)
废话少说,现将出现的问题及解决办法总结如下:
- 解决o2oa与onlyoffice访问时出现的Mix Content问题
按F12打开开发人员工具在console下显示Mix Content(网站混合),原因是o2oa已经实现https://xxx.xxx.xxx访问了,而onlyoffice仍然采用httpp访问。于是参考文章(https://blog.csdn.net/hotqin888/article/details/112722607)实现了onlyoffice通过https访问,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无法对客户端自签名证书进行认证
解决办法:关闭客户端证书认证
- 进入onlyoffice容器并修改onlyoffice的default.json文件
参考文献:https://blog.csdn.net/boliang319/article/details/105650310
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宿主机修改后复制回去。
- 重启onlyoffice的docker容器,使配置生效
docker restart 容器ID
还有一个问题需手动处理,在浏览器中,onlyoffice的api.js文件无法自动加载,需要访问网址
https://xxx.xxx.xxx:xx/web-apps/apps/api/documents/api.js进行手动加载。
(3)onlyoffice容器无法访问onlyoffice的https网址
参考:https://blog.csdn.net/boliang319/article/details/105651678?spm=1001.2014.3001.5502
补充:
经过上面一翻折腾之后,onlyoffice在表单中可以正常预览了,但在线协作打开文件时会报“下载失败错误”,解决办法如下:
找到xxx/o2server/servers/webServer/x_component_CloudDocumentEditor下的Main.js文件
先将Main.min.js修改为Main.min.js.bak,再将Main.js修改为Main.js,然后在文件最后倒数第16-17行,有如下两条语句:
this.document.editor.document.url = o2.filterUrl(this.document.editor.document.url.replace(/http/,"https"));
this.document.editor.editorConfig.callbackUrl = o2.filterUrl(this.document.editor.editorConfig.callbackUrl);
用replace将http替换成https,即改成如下的样子:
this.document.editor.document.url = o2.filterUrl(this.document.editor.document.url.replace(/http/,"https").replace(/undefined/,"o2oa"));
this.document.editor.editorConfig.callbackUrl = o2.filterUrl(this.document.editor.editorConfig.callbackUrl).replace(/http/, "https");
总之,采用自签名证书的优点是免费,但也会带来一些意想不到的问题,证书的签发时间可以比商业授权的长得多,但安全性相对较低,有条件建议购买商业证书。
最后,o2oa的开源精神值得点赞,但开源不等于免费,建议有需求的客户购买其官方服务,毕竟专业的人干专业的事,尊重知识,支持原创,并非任何问题都能靠一已之力解决。
解决O2OA自签名证书后onlyoffice无法预览及保存文件问题相关推荐
- html上传动态图片不显示图片,解决 viewer.js 动态更新图片导致无法预览的问题
前台页面要求图片的查看,是在表格中点击查看才弹出图片,网上发现用Viewer插件的挺多,就选用的这款插件,但是Viewer插件会产生缩略图,这里取巧了,将缩略图统一替换成了一个带有查看两字的小图片,这 ...
- html动态添加图片不显示不出来,解决 viewer.js 动态更新图片导致无法预览的问题...
前台页面要求图片的查看,是在表格中点击查看才弹出图片,网上发现用Viewer插件的挺多,就选用的这款插件,但是Viewer插件会产生缩略图,这里取巧了,将缩略图统一替换成了一个带有查看两字的小图片,这 ...
- wordpress插件-really-simple-ssl插件解决网站开启ssl证书后,图片不能正常显示
介绍: 前言碎语 先讲一下网站开启ssl证书后,图片不能正常显示的原因: 图片原本是http://xxx.xxx.xxx/xx/xx.png 但是你安装证书以后的地址变成了https://xxx.xx ...
- 解决手机安装Charles证书后,https抓取的请求依然为unknown
手机安装Charles证书后,https抓取的请求依然为unknown 1.选中"启动SSL代理" 2.点击"添加": 主机:* 端口:443 如下图: 3.再 ...
- EV代码签名证书,支持Windows 10预览版和正式版驱动签名
DigiCert EV代码签名证书具有普通内核代码签名证书的所有功能,但不同的是采用更加严格国际标准扩展验证(EV验证),并且有严格的证书私钥保护机制--必须采用 USB Key来保护签名证书的私钥, ...
- 解决OpenOffice文件预览转换xlsx文件出现com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported
OpenOffice在进行xlsx文件预览时出现发生如下错误: com.sun.star.lang.IllegalArgumentException: URL seems to be an unsup ...
- 解决windows电脑系统图片不显示缩略图预览的2种办法
今天发现,windows10桌面的图片全部显示成默认图片编辑器的图标了,这样会造成选择图片的时候非常不方便, 昨天还一切正常是什么造成了这样的现象? 问题如图: 解决方案1:windows设置问题 w ...
- DzzOffice开源办公套件(网盘)+OnlyOffice本地预览
- python gridfs_【已解决】用Python去连接本地mongoDB去用GridFS保存文件
折腾: 期间,命令行方式的mongofiles去put get delete delete_id等,已经基本上搞清楚了. 接着就是去用Python代码,通过driver: 的方式,调用API,去保存数 ...
最新文章
- 金融行业安全漏洞分析报告
- maven打包jar上传到nexus
- ALV打印不显示打印界面的问题
- Bootloader之uBoot简介(转)
- SEL selector (二)
- 上海市社会保险费缴费标准
- C语言野指针产生的情况
- citrixreceiver云桌面系统_CStack xView桌面云平台与方德操作系统完成兼容性认证
- win10系统可禁用的服务器,Win10系统SysMain服务是什么?Win10系统SysMain能不能禁用?...
- 20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本...
- 软件构造 git 图形界面看Object Graph
- 后台UI框架bootstrap、JQuery——Hplus-v.4.1.0
- 《Oracle Exadata云服务官方指南》之 Oracle Database Exadata 云服务
- MWC 2018前瞻:三星华为诺基亚们会展示这些黑科技!
- matlab寻找频谱峰值,matlab – 从数据中获取FFT峰值
- 车道线检测---色彩空间变换
- 搜狗输入法自定义短语设置
- javaWeb-第一版
- 抖音 Android 基础技术大揭秘!
- 自整理Java面试题集锦(Java基础 1)