Nginx的配置與開發學習(五):配置屬於自己的HTTPS證書

Nginx高級模塊

  1. secure_link_module模塊
  • 制定 並允許檢查請求的鏈接的真實性以及保護資源免遭未經授權的訪問
  • 限制鏈接生效週期
    在這裏插入圖片描述
    md5:加密驗證 expires:過期校驗

safe_down.conf 配置

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
    root /opt/app/code;

    location / {
        secure_link $arg_md5,$arg_expires;
        secure_link_md5 "$secure_link_expires$uri baidu";#baidu爲自定義字符串

        if ($secure_link = "") {
            return 403;
        }

        if ($secure_link = "0") {
            return 410;
        }
    }
}
  1. geoip_module模塊:國內(浙江訪問浙江,江蘇訪問江蘇)用戶訪問國內服務器,國外用戶訪問國外服務器

    • 基於IP地址匹配MaxMind GeoIP二進制文件,讀取IP所在地域信息
    • yum install nginx-module-geoip

    geo.conf 配置

    geoip_country /etc/nginx/geoip/GeoIP.dat;
    geoip_city /etc/nginx/geoip/GeoLiteCity.dat;
    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/log/host.access.log  main;
    
        location / {
            if ($geoip_country_code != CN) {
                return 403;
            }
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
       location /myip {
            default_type text/plain;
            return 200 "$remote_addr $geoip_country_name $geoip_country_code $geoip_city";
       }
       ......
    }
    

HTTPS服務

  1. CA簽名證書可以防止中間人劫持
  2. 生成密鑰和CA證書

服務器上自己配置HTTPS證書生成流程:

  1. openssl version 查看openssl的版本屬性(雙重檢查:rpm -qa|grep open)

  2. cd /etc/nginx/ 下mkdir ssl_key文件夾

  3. 在ssl_key文件夾下面生成密鑰文件:openssl genrsa -idea -out cyj.key 1024

  4. 填寫完密碼後再根據key文件生成csr文件:openssl req -new -key cyj.key -out cyj.csr

  5. 根據信息填寫完之後,再把csr和key文件打包生成crt文件,有效期10年:

    openssl x509 -req -days 3650 -in cyj.csr -signkey cyj.key -out cyj.crt

  6. ssl.conf配置文件

    server
     {
       listen       443 ssl;#nginx1.15版本之後開啓https
       server_name  ip  crt內寫的hostname;
       ssl on; #nginx1.15版本之後就可以去掉這個,才用listen..ssl
       ssl_certificate /etc/nginx/ssl_key/jesonc.crt;
       ssl_certificate_key /etc/nginx/ssl_key/jesonc.key;
       #ssl_certificate_key /etc/nginx/ssl_key/jesonc_nopass.key;
    
       index index.html index.htm;
       location / {
           root  /opt/app/code;
       }
    }
    
  7. nginx -s stop -c /etc/nginx/nginx.conf,需要輸入你設置的key密碼

  8. nginx -c /etc/nginx/nginx.conf 啓動nginx

  9. 查看端口號:netstat -luntp|grep 443

配置蘋果要求的證書

  • 服務器所有的連接使用TLS1.2以上版本
  • HTTPS證書必須使用SHA256以上哈希算法前簽名
  • HTTPS證書必須使用RSA 2048位或ECC 256位以上公鑰算法
  • 使用前向加密技術

開始配置

  1. 查看openssl版本號:openssl version 1.0.2k以上
  2. 查看證書算法類型:openssl x509 -noout -text -in ./cyj.crt
  3. 根據key文件直接生成crt文件:openssl req -days 3650 -x509 -sha256 -nodes -newkey rsa:2048 -keyout(重啓nginx不用輸入密碼) cyj.key -out cyj_apple.crt
  4. 其他配置都跟上面相同

HTTPS服務優化

  1. 激活keepalive長連接

  2. 設置ssl session緩存

    server
     {
       listen       443 ssl;
       server_name  localhost;
     
       keepalive_timeout 100;
    
       ssl_session_cache   shared:SSL:10m;
       ssl_session_timeout 10m;
    
       ssl_certificate /etc/nginx/ssl_key/cyj.crt;
       ssl_certificate_key /etc/nginx/ssl_key/cyj.key;
    
       index index.html index.htm;
       location / {
           root  /opt/app/code;
       }
    }
    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章