步驟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網站