配置Nginx以https方式訪問

步驟1:Create the SSL Certificatenode

sudo mkdir /etc/nginx/ssl -p
sudo openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

建立了有效期100年,加密強度爲RSA2048的SSL密鑰key和X509證書文件。nginx

參數說明:
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來生成全部二級域名可用的網站證書。
整個問題應該以下所示:git

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

步驟2: Configure Nginx to Use SSLapi

首先配置HTTP請求重定向瀏覽器

server {
        listen       80;
        server_name  www.yourdomain.com;
        # 強制將http轉到https
        rewrite ^ https://$http_host$request_uri? permanent;    
         #return 301 https://$http_host$request_uri;
    }

server {
        listen 443 ssl;

        ssl_certificate /etc/nginx/ssl/nginx.crt;
        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;
    }

若是想同時啓用HTTP和HTTPS服務器

server {
    listen              80;
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ...
}

步驟3:重啓nginxdom

附錄一、證書格式說明
.crt:自簽名的證書
.csr:證書的請求(用於向證書頒發機構申請crt證書時使用,nginx配置時不會用到)
.key:SSL Key (分爲不帶口令和帶口令版本)。
咱們自簽名證書配置nginx須要的是.crt證書,和不帶口令的SSL Key的.key文件。ide

附錄二、可靠的第三方SSL證書頒發機構
目前通常市面上針對中小站長和企業的 SSL 證書頒發機構有:
StartSSL
Comodo / 子品牌 Positive SSL
GlobalSign / 子品牌 AlphaSSL
GeoTrust / 子品牌 RapidSSL網站

相關文章
相關標籤/搜索