• Centos7.2下Nginx配置SSL支持https访问(站点是基于.Net Core2.0开发的WebApi)


    准备工作

    1.基于nginx部署好的站点(本文站点是基于.Net Core2.0开发的WebApi,有兴趣的同学可以跳http://www.cnblogs.com/GreedyL/p/7422796.html)

    2.证书颁发机构(CA)颁发的有效证书,其中我们需要两个文件,一个是 .key文件(私钥),另一个是 .crt或.pem文件(公钥)

    核心配置

    • 通过指定由受信任的证书颁发机构(CA)颁发的有效证书,将服务器配置为侦听端口上的HTTPS流量

    • 通过配置nginx.conf文件来加强安全性。示例包括选择更强大的密码,并将所有流量通过HTTP重定向到HTTPS。

    • 添加HTTP Strict-Transport-Security(HSTS)头部确保客户端所做的所有后续请求仅通过HTTPS。

    nginx配置ssl,需要确保nginx包含相应的模块--with-http_ssl_module

    查看nginx安装参数是否已经包含此模块,如果未包含请先安装此模块

    nginx -V

     添加/etc/nginx/proxy.conf配置文件:

    vi etc/nginx/proxy.conf
    proxy_redirect             off;
    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;
    client_max_body_size     10m;
    client_body_buffer_size 128k;
    proxy_connect_timeout     90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;
    proxy_buffers            32 4k;

    编辑/etc/nginx/nginx.conf配置文件。配置主要包含两个部分httpserver。(如果有同学是配置在conf.d下的default.conf,可以将其备份或删除)

    vi /etc/nginx/nginx.conf
    http {
        include    /etc/nginx/proxy.conf;
        limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
        server_tokens off;
    
        sendfile on;
        keepalive_timeout 29; # Adjust to the lowest possible value that makes sense for your use case.
        client_body_timeout 10; client_header_timeout 10; send_timeout 10;
    
        upstream hellomvc{
            server localhost:5000;
        }
    
        server {
            listen *:80;
            add_header Strict-Transport-Security max-age=15768000;
            return 301 https://$host$request_uri;
        }
    
        server {
            listen *:443    ssl;
            server_name     example.com;
            ssl_certificate /etc/ssl/certs/testCert.crt;
            ssl_certificate_key /etc/ssl/certs/testCert.key;
            ssl_protocols TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
            ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
            ssl_ecdh_curve secp384r1;
            ssl_session_cache shared:SSL:10m;
            ssl_session_tickets off;
            ssl_stapling on; #ensure your cert is capable
            ssl_stapling_verify on; #ensure your cert is capable
    
            add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
            add_header X-Frame-Options DENY;
            add_header X-Content-Type-Options nosniff;
    
            #Redirects all traffic
            location / {
                proxy_pass  http://hellomvc;
                limit_req   zone=one burst=10;
            }
        }
    }

    有几处需要更改

    • server_name改成你的域名=申请证书绑定的域名

    • ssl_certificate改成你的公钥路径

    • ssl_certificate_key改成你的私钥路径

    一些安全配置

    防止Clickjacking(点击劫持),Clickjacking是一种恶意技术来收集受感染的用户的点击。劫持受害者(访问者)点击感染的网站,使用X-FRAME-OPTIONS。

    编辑nginx.conf文件:

    vi /etc/nginx/nginx.conf
    将配置中的
    add_header X-Frame-Options DENY;
    更改为
    add_header X-Frame-Options SAMEORIGIN;

    重新加载nginx

    service nginx reload

    MIME类型的嗅探,此标头防止大多数浏览器从声明的内容类型中嗅探响应,因为标头指示浏览器不要覆盖响应内容类型,使用nosniff选项

    编辑nginx.conf文件:

    vi /etc/nginx/nginx.conf
    添加行
    add_header X-Content-Type-Options nosniff;

    上文的nginx.conf已配置好此标头,保存文件,重新启动Nginx

    greedy丶L
  • 相关阅读:
    操作系统精髓读书笔记
    springboot 项目中读取资源文件内容 如图片、文档文件
    重构-改善既有代码的设计读书小结
    投资中最简单的事读书笔记
    公司的行业差异
    Linux-TCP之深入浅出send和recv
    Linux-socket的close和shutdown区别及应用场景
    C-pthread_cond_wait 详解
    Linux-文件描述符的本质及与文件指针的区别
    数据结构-树的进化及与数据库的关系
  • 原文地址:https://www.cnblogs.com/GreedyL/p/7472630.html
Copyright © 2020-2023  润新知