Centos7.2下Nginx配置SSL支持https訪問(站點是基於.Net Core2.0開發的WebApi)
阿新 • • 發佈:2017-09-04
ack 保存 受害者 etc proxy cer 查看 綁定 客戶端 MIME類型的嗅探,此標頭防止大多數瀏覽器從聲明的內容類型中嗅探響應,因為標頭指示瀏覽器不要覆蓋響應內容類型,使用
準備工作
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配置文件。配置主要包含兩個部分http
和server
。(如果有同學是配置在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
Centos7.2下Nginx配置SSL支持https訪問(站點是基於.Net Core2.0開發的WebApi)