# Web服务部署配置https

# 1、nginx配置https

检查nginx.conf,修改如下配置:

1、修改server的IP地址为实际OA服务的IP+端口

2、配置SSL证书,需要客户提前从第三方厂商购买证书

crt文件和key文件路径:

将crt文件命名为server.crt

将key文件命名为server.key

然后在conf目录中创建ssl目录

将server.crt和server.key文件拷贝到ssl目录

3、详细配置如下

    upstream seeyon_v5_cluster {
        sticky;
        server 10.3.4.104:80 max_fails=300 fail_timeout=30;
        server 10.3.4.108:80 max_fails=300 fail_timeout=30;
    }
    server {
        listen  443 ssl;
        server_name  localhost;
        ssl_certificate ssl/server.crt;
        ssl_certificate_key ssl/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        charset utf-8;

        location / {
            proxy_pass http://seeyon_v5_cluster;
            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     off;
            proxy_connect_timeout 300;
            proxy_read_timeout 300;
            proxy_send_timeout 300;
        }
    }

4、oa配置https

编辑配置文件 ApacheJetspeed/conf/server.xml

找到Connector这一栏配置,在port后增加proxyPort="443" scheme="https" 这个2个配置,其中443是实际访问https使用的端口,需要根据客户实际情况配置

修改并保存后,按顺序重启所有oa节点

注意事项

如果客户需要同时保留http与https访问,那么http与https对应的后端oa监听端口应该分开,也就是oa监听2个端口,分别对应http与https访问;我们在配置第4步时,应该重新复制一行Connector,在新复制这行上,修改port监听端口,并增加 proxyPort="443" scheme="https" ,保证在通过http访问时,重定向不会到https上:

# 2、nginx配置http重定向https

此场景需要在nginx配置了https访问的条件下进行配置

编辑nginx.conf配置

在http段落中增加server段,并新增http协议的端口,做rewrite跳转

    upstream seeyon_v5_cluster {
        sticky;
        server 10.3.4.104:80 max_fails=300 fail_timeout=30;
        server 10.3.4.108:80 max_fails=300 fail_timeout=30;
    }
    server {
        listen 80;
        server_name  localhost;
        charset utf-8;

        location / {
            rewrite ^(.*)$ https://$host$1 permanent;
        }
    }
    server {
        listen  443 ssl;
        server_name  localhost;
        ssl_certificate ssl/server.crt;
        ssl_certificate_key ssl/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        charset utf-8;

        location / {
            proxy_pass http://seeyon_v5_cluster;
            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     off;
            proxy_connect_timeout 300;
            proxy_read_timeout 300;
            proxy_send_timeout 300;
        }
    }

# 3、Apache配置HTTPS(不推荐)

我们推荐Nginx配置HTTPS,使用Apache配置太过繁琐。

说明:

  • 若不使用Apache的HTTPS功能,可以不进行以下步骤。

  • 若为单机环境,则在Apache的conf **/**workers.properties中只需配置一个tomcat节点。

  • 使用https需在SeeyonConfig中设置服务器配置为:单机(HTTPS)或集群/双机。

启用支持openssl版本Apache的HTTPS功能步骤如下:

Windows下https配置:

  • 配置文件更改:

打开httpd.conf文件,取消注释或增加以下内容:

Include conf/extra/httpd-ssl.conf
  • 编辑conf/extra/httpd-ssl.conf文件,取消注释或增加以下内容:
SSLCertificateFile    "conf/server.crt"
SSLCertificateKeyFile "conf/server.key"
JkMount /* controller

修改说明:

在Apache/conf目录中放置CA的.crt和.key文件,注意文件名分别为:server.crt、server.key;

为了取得更好的安全性,建议使用经过安全机构认证过的第三方证书。

启用mod_jk模块,并开启https时,httpd-ssl.conf中需要增加JkMount /* controller

重启Apache即可使用http、https方式访问Web服务。

Linux下https配置

  • 前提条件:编译安装包时,增加--enable-ssl参数。

  • 其他配置同Windows下配置。

# 4、F5配置说明

协同系统的集群结构需要web服务做负载均衡时会话保持(或会话粘滞),会话保持机制的意义在于,确保将来自相同客户端的请求,转发至后端相同的服务器进行处理。

因此F5需采用符合会话保持原理的负载均衡策略才可保证协同集群系统的正常运行。

# 5、https访问功能异常,出现http请求问题

解决方法: 该问题一般是由于302临时重定向时,响应头location中地址为http 编辑各节点ApacheJetspeed/conf/server.xml文件,查找

整行复制查找结果,修改复制的一行Connector端口为81(空闲可用),并且在该行增加proxyPort="443" scheme="https",即上文所述配置,如下图所示:

然后保存修改(本例中被复制的一行配置默认80端口,此端口供M1、M3连接使用,协同系统配置SeeyonConfig读写的也是此行)。停止集群所有节点V5服务,再启动主节点,成功后启动其它节点;

同时需要修改web服务中配置的协同访问地址的端口号,修改成上述server.xml文件新增加的端口!

案例一:阿里云V5集群+阿里云SLB负载均衡HTTPS配置实战

1、集群各节点配置完成后,编辑各节点ApacheJetspeed/conf/server.xml文件,查找protocol="HTTP/1.1"

2、整行复制查找结果,然后修改复制的一行Connector端口为81(空闲可用),并且在该行增加proxyPort="443" scheme="https",如下图所示:

保存修改(本例中被复制的一行配置默认80端口,此端口供M1、M3连接使用,协同系统配置SeeyonConfig读写的也是此行)。停止集群所有节点V5服务,再启动主节点,成功后启动其它节点;

3、阿里云负载均衡,监听

3.1、前端协议HTTPS,443;后端协议HTTP,81(第2步复制并修改的行中定义的端口);
3.2、会话保持需要打开;

3.3、配置,附加HTTP头字段,勾上SLB监听协议;

4、阿里云负载均衡,服务器

后端服务器中添加V5集群各节点服务器。

案例二:记一个深信服AD-8200配置HTTPS,部分V5页面出现脚本错误

问题现象:https登录V5以后,收文拟文,页面报脚本错误,正文按钮点击无响应

fiddler抓包结果出现http协议的请求

解决方法:

编辑ApacheJetspeed/conf/server.xml文件,复制访问端口连接器配置,端口设置为80、81;在80端口连接器中增加配置proxyPort="443" scheme="https" secure="true"

M1、M3、微协同等连接V5服务81端口,重启V5服务,问题解决。

案例三:所有电脑点击下载左上角上传附件按钮中的附件时,没有反应_BUG2022030884851

原因分析:浏览器F12查看https中嵌入了http请求

解决方法:server.xml增加配置proxyPort="443" scheme="https",重启OA后解决

案例四:

案例五:

创建人:zhangshuang
修改人:wangyxyf、zhengkejie、het