系统使用https,http转https,caddy,nginx,WAF

2020年12月2日 作者 kee

几种方案:

  1. toppgo
  2. 测试环境
  3. parcels

一、caddy https

  1. 优点:caddy自带https证书,不需要申请证书就可以使用;当然也可以使用自己的证书
  2. 官网文档:https://caddyserver.com/docs/
  3. caddy2的配置:启用https,并将https请求转发到80端口(nginx)

    {
      http_port 81
    }
    www.toppgo.com {
      reverse_proxy 127.0.0.1:80
    }
    
    说明:
    1. http_port:自定义caddy的http端口(由于80已经被nginx占用了,这里改了,实际上没用)
    2. reverse_proxy:反向代理
    
    caddy2常用命令:
    1. 使用caddy help查看
    2. caddy strat、caddy reload 、caddy stop

二、nginx https

  1. nginx生成并配置https(配置完后,就可以https访问了)
    • 生成证书参考:https://www.cnblogs.com/fengyuduke/p/11232662.html
    • Nginx官网文档:http://nginx.org/en/docs/http/configuring_https_servers.html
    • 注意:自己生成的证书,不能用于生产环境,会显示不安全;关键配置如下:
      server {
          # listen 80; # 一个server同时支持http和https也是可以的
          listen 443 ssl;
          server_name  ~^api\.(.+)?\.(com|com.cn|tech|cn)$;
          #ssl on;
          ssl_certificate /etc/nginx/crt/server.crt;
          ssl_certificate_key /etc/nginx/crt/server.key;
          ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
          ssl_prefer_server_ciphers on;
          location / {
              proxy_pass http://parcels-web;
          }
      }
  2. 测试环境配置http转https(所有http请求转发到https上)

    ## api 访问强制跳转到https
    
    server {
        listen       80;
        server_name  api.parcels.tech;
    
        if ($request_method ~* GET) {
            return 301 https://$server_name$request_uri;
        } 
        if ($request_method ~* POST) 
        {
            return 307 https://$server_name$request_uri;
        }
    }
    
    说明:
    1. 301:永久重定向,主要用于GET请求;POST参数丢失
    2. 307:临时重定向,可以将POST的参数带过去
    3. nginx重定向详细说明:https://may90.com/tech/redirect-technology.html
    

三、阿里云的web应用防火墙(WAF)

  1. 购买SSL证书
  2. 开通web应用防火墙(按量QTS付费的,尽量购买资源包)
  3. 添加域名
  4. 配置域名
  5. 域名重新解析(理论上阿里云的域名会自动解析,但要检查,有时候不会自动)
  6. 上传证书
  7. 此时,http和https协议都支持访问
  8. https整改
    • 如果网站有使用http资源,会报不安全
    • 如果代码有调用http协议接口,可能会有问题
    • 客户调用接口使用http协议,可能会有问题
  9. 开启https强制跳转
  10. 开启https强制跳转风险
    • 客户已经使用http对接了我们,如果强制跳转https,会不会出现异常?
    • 界面上如果有http请求的图片等资源,浏览器会报不安全
    • 系统内部调用自己接口使用http协议,是否有问题?