1. 程式人生 > >Nginx配置Https詳細說明

Nginx配置Https詳細說明

Nginx Https

TLS或傳輸層安全( transport layer security),它的前身是SSL(安全套接字層secure sockets layer),是Web協議用來包裹在一個受保護,加密封裝正常通道。采用這種技術,服務器和客戶端之間可以安全地進行交互,而不用擔心消息將被攔截和讀取。證書系統幫助用戶在核實它們與連接站點的身份。
環境說明

Nginx*2+Keepalived+Tomcat*2的Web環境
搭建詳細請看:http://blog.51cto.com/gdutcxh/2109841

實驗環境下配置

1、下載openssl:yum install openssl* -y
2、使用openssl生成數字證書
    mkdir -p /etc/nginx/ssl
    openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.pem

    Country Name (2 letter code) [AU]:US
    State or Province Name (full name) [Some-State]:New York
    Locality Name (eg, city) []:New York City
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc.
    Organizational Unit Name (eg, section) []:Ministry of Water Slides
    Common Name (e.g. server FQDN or YOUR name) []:your_domain.com
    Email Address []:admin@your_domain.com
3、Nginx下的配置(只啟用Https)
    server {
        listen       80;
        server_name  www.yourdomain.com;
        rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https
        #return 301 https://$http_host$request_uri;
    }

server {
        listen 443 ssl;
        ssl_certificate /etc/nginx/ssl/nginx.pem;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;
        keepalive_timeout   70;
        server_name www.yourdomain.com;
       #禁止在header中出現服務器版本,防止黑客利用版本漏洞攻擊
        server_tokens off;
        #如果是全站 HTTPS 並且不考慮 HTTP 的話,可以加入 HSTS 告訴你的瀏覽器本網站全站加密,並且強制用 HTTPS 訪問
        #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
        # ......
        fastcgi_param   HTTPS               on;
        fastcgi_param   HTTP_SCHEME         https;

        access_log      /var/log/nginx/wiki.xby1993.net.access.log;
        error_log       /var/log/nginx/wiki.xby1993.net.error.log;
    }
4、同時使用Http和Https
Nginx下配置
server {
    listen              80;
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.pem;
    ssl_certificate_key www.example.com.key;
    ...
}
6、重啟Nginx

openssl的說明

req: 配置參數-x509指定使用 X.509證書簽名請求管理(certificate signing request (CSR))."X.509" 是一個公鑰代表that SSL and TLS adheres to for its key and certificate management.
-nodes: 告訴OpenSSL生產證書時忽略密碼環節.(因為我們需要Nginx自動讀取這個文件,而不是以用戶交互的形式)。
-days 36500: 證書有效期,100年
-newkey rsa:2048: 同時產生一個新證書和一個新的SSL key(加密強度為RSA 2048)
-keyout:SSL輸出文件名
-out:證書生成文件名
它會問一些問題。需要註意的是在common name中填入網站域名,如wiki.xby1993.net即可生成該站點的證書,同時也可以使用泛域名如*.xby1993.net來生成所有二級域名可用的網站證書。

企業Web服務器的HTTPS

一、申請,購買CA證書
    一般各大雲服務提供商都會有此類證書服務,根據公司和業務需求,可以自己選擇免費或者付費的證書。
二、下載並解壓證書文件
    一個zip包,裏面有xxx.key和xxx.pem兩個文件。
三、配置Nginx(同上)

Nginx配置Https詳細說明