HTTP 转 HTTPS

admin 2024年9月24日12:00:43评论10 views字数 1350阅读4分30秒阅读模式

医院内网的服务大多是以未加密的 HTTP 形式提供服务,服务器有 IIS 、Tomcat 、Apache等。有一个需求要将内网的 HTTP 服务映射到公网,但暴露在公网的服务要以 HTTPS 的形式对外开放。

换句话描述就是,后端还是使用原始的 HTTP 服务,前端使用 HTTPS 处理加解密。不对后端服务器做任何改造,通过增加一层 HTTPS 的处理层来实现 HTTP 转 HTTPS。

有两种实现思路,一种使用负载均衡设备实现 HTTP 转 HTTPS,另一种是使用 Nginx 来实现。

先说下 Nginx 方案:

实现原理:Nginx 接收 HTTPS 请求,处理 SSL 加密,然后将解密后的请求转发给后端的 HTTP 服务。后端服务只需要继续运行 HTTP,不需要处理 HTTPS。

Nginx方案:

  • Nginx 处理来自客户端的 HTTPS 请求。

  • Nginx 终止 SSL(SSL termination),密请求并将请求转发给原始的 HTTP 服务。

  • 客户端只与 Nginx 通信,并认为整个通信过程是通过 HTTPS 加密的。

  • 后端 HTTP 服务仍然只处理 HTTP 流量,Nginx 负责解密和代理。

Nginx 配置文件 Demo:

events {  worker_connections 1024; #单个后台worker process进程的最大并发链接数}http {  server {    # 监听 HTTPS 请求    listen 443 ssl;    server_name your_domain.com;    # SSL 证书配置    # ssl_certificate /etc/nginx/ssl/your_domain.com.crt;    # ssl_certificate_key /etc/nginx/ssl/your_domain.com.key;    ssl_certificate D:/nginx/nginx-1.27.0/ssl/it.vip.crt;    ssl_certificate_key D:/nginx/nginx-1.27.0/ssl/it.vip.key;    ssl_protocols TLSv1.2 TLSv1.3;    ssl_ciphers HIGH:!aNULL:!MD5;    # 反向代理到后端 HTTP 服务    location / {      proxy_pass http://it.vip:19999/; # 转发到后端 HTTP 服务器      proxy_set_header Host $host;      proxy_set_header X-Real-IP $remote_addr;      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;      proxy_set_header X-Forwarded-Proto $scheme;    }  }}

本地测试的 Nginx 版本是 v1.27.0,测试平台是 Windows ,HTTP 转 HTTPS 后的服务效果为:

HTTP 转 HTTPS

配置文件中的证书一般由厂家提供,或使用免费的自签证书,商用证书便宜的需要¥2000左右每年,网上免费的有效期一般只有三个月。

负载均衡方案

第二种方案需要花钱购买负载均衡设备,负载均衡设备一般在17万左右一台,一般会使用两台组一个主备方案。因为各家使用的设备型号都不同,所以配置只是作为参考。

以下配置是以 Sangfor 的负载示例:

HTTP 转 HTTPS

全文完。

原文始发于微信公众号(生有可恋):HTTP 转 HTTPS

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月24日12:00:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   HTTP 转 HTTPShttps://cn-sec.com/archives/3201949.html

发表评论

匿名网友 填写信息