致远 OA HTTPS 配置避坑指南

致远 OA HTTPS 配置避坑指南

环境说明

  • 产品版本 :致远 A6-V5 企业版 V5.6SP1
  • 部署环境 :Windows Server 2008 R2 Standard
  • 应用部署方式 :单机 Tomcat 部署
  • Tomcat 端口 :8080
  • HTTPS 方式:Nginx 反向代理
  • 域名 :oa.xxxx.com
  • HTTPS 端口 :4433 (本机443端口已被其他服务占用)

一、需求简述

将致远 A6-V5 企业版 V5.6SP1 从原来的:

bash 复制代码
http://oa.xxxx.com:8080

改为通过 Nginx 对外提供 HTTPS 访问:

bash 复制代码
https://oa.xxxx.com:4433

并解决 HTTPS 场景下常见的报错:

  • 页面可打开但提交报错
  • 浏览器提示混合内容
  • 页面中仍然生成 http:// 地址
  • 400 The plain HTTP request was sent to HTTPS port

二、致远OA实现HTTPS加密访问的逻辑图

三、NGINX准备

在Windows Server 中安装NGINX参考文章:Windows Server 部署 Nginx 反向代理指南

本环境最终使用的思路:

  • 80 端口跳转到 HTTPS
  • 4433 提供 HTTPS
  • 反向代理到本机 OA Tomcat 的 8080
  • 使用sub_filter模块对页面中的 http://oa.xxxx.com 做内容替换,修复老版本 A6V5 输出 HTTP 地址的问题
1、配置NGINX

nginx.conf 推荐配置内容如下:

nginx 复制代码
worker_processes  auto;

events {
    worker_connections  2048;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout 65;
    keepalive_requests 1000;
    server_tokens off;
    client_max_body_size 60m; #文件上传大小限制

    tcp_nopush on;
    tcp_nodelay on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 5;
    gzip_min_length 1k;
    gzip_buffers 16 8k;

    gzip_types
        text/plain
        text/css
        text/html
        text/xml
        application/javascript
        application/x-javascript
        text/javascript
        application/json
        application/xml
        application/xhtml+xml;

    server {
        listen 80;
        server_name oa.xxxx.com;
        return 301 https://$host:4433$request_uri;
    }

    server {
        listen 4433 ssl;
        server_name oa.xxxx.com;

        ssl_certificate      E:/nginx-1.16.1/nginx-1.16.1/ssl/ssl.pem;
        ssl_certificate_key  E:/nginx-1.16.1/nginx-1.16.1/ssl/ssl.key;

        ssl_protocols TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf)$ {
            proxy_pass http://127.0.0.1:8080;

            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            proxy_redirect http:// https://;
            proxy_set_header Accept-Encoding "";

            sub_filter_once off;
            sub_filter_types text/css application/javascript application/x-javascript text/javascript;
            sub_filter 'http://oa.xxxx.com' 'https://oa.xxxx.com';

            expires 7d;
            add_header Cache-Control "public";

            proxy_connect_timeout 300;
            proxy_read_timeout 300;
            proxy_send_timeout 300;
        }

        location / {
            proxy_pass http://127.0.0.1:8080;

            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            proxy_redirect http:// https://;
            proxy_set_header Accept-Encoding "";

            sub_filter_once off;
            sub_filter_types text/html text/css text/xml text/plain application/javascript application/x-javascript text/javascript application/json;
            sub_filter 'http://oa.xxxx.com' 'https://oa.xxxx.com';

            proxy_connect_timeout 300;
            proxy_read_timeout 300;
            proxy_send_timeout 300;
        }
    }
}

sub_filter 是本次修复的关键,它的核心作用是在响应内容返回给客户端之前,对 HTML 等文本内容进行实时、轻量级的字符串替换,而无需修改后端代码或源文件。

2、放置 SSL 证书

把SSL证书文件.pem 和 .key 文件放入目录(自定义)

bash 复制代码
E:\nginx-1.16.1\nginx-1.16.1\ssl\

并确认配置中的路径一致:

nginx 复制代码
ssl_certificate      E:/nginx-1.16.1/nginx-1.16.1/ssl/ssl.pem;
ssl_certificate_key  E:/nginx-1.16.1/nginx-1.16.1/ssl/ssl.key;

四、修改OA配置

对于 A6V5,不建议优先改 Tomcat HTTPS,而是需要在服务器本地打开【协同系统配置】------【系统参数设置】------找到参数【internet.site.url】,并将原来的http://oa.xxxx.com:8080改成https://oa.xxxx.com:4433

1、服务器本地打开【协同系统配置】
2、修改参数

五、效果检查

完成以上配置后,通过访问 【oa.xxxx.com】,可自动跳转https://oa.xxxx.com:4433,页面可正常提交表单,不再报错,浏览器不再提示混合内容拦截,说明 HTTPS 配置可用。

相关推荐
XUEYUAN52124 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
CHENKONG_CK4 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
2501_916007474 天前
苹果商店iOS应用上架费用全面解析:开发者计划与审核费用计算
android·ios·小程序·https·uni-app·iphone·webview
Lsetea4 天前
证书没到期却报certificate has expired:OpenSSL定位中间证书与系统时间
运维·https·ssl证书·openssl·证书链
z落落4 天前
C#UDP+串口服务端+UDP 客户端(含 CRC16 校验)
网络·网络协议·udp
2501_916008894 天前
如何实现iOS App代码混淆:SwiftShield使用指南
android·ios·小程序·https·uni-app·iphone·webview
SDWAN_Cheap4 天前
HTTPS到底加密了什么?
https·数据加密
曼巴UE54 天前
UE5 客户端 需要的网络同步概念总结(3 )-事件同步 RPC 以及三种调用方式
网络·c++·网络协议·学习·rpc·ue5
captain3764 天前
HTTP(2)
java·网络·http·java-ee
开开心心就好4 天前
安卓手写文字生成工具,多种纸张一直免费
网络·网络协议·tcp/ip·leetcode·智能手机·电脑·模拟退火算法