以 COMODO PositiveSSL 證書爲例,您將收到四份文件:html
AddTrustExternalCARoot.crt
COMODORSAAddTrustCA.crt
COMODORSADomainValidationSecureServerCA.crt
example_com.crt
您要依照 域名證書 -> 中間證書 -> 根證書 的順序串聯爲證書鏈,才能被絕大多數瀏覽器信任。使用 cat
命令串聯證書:算法
cat example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > example_com.bundle.crt
獲得 example_com.bundle.crt
後,和密鑰文件 example_com.key
一同上傳至服務器並保存在安全的位置,例如/etc/ssl/private
目錄下(沒有此目錄請建立)。瀏覽器
下面是一份針對較新版本的 NGINX 的 SSL 部分配置,請將其添加到站點配置文件中 server
的部分,並根據註釋和您的需求修改。安全
listen 443 ssl; # 偵聽端口 # listen [::]:443 ssl ipv6only=on; # 若是您但願同時偵聽 IPv6,請取消此行註釋 server_name example.com; # 請改成您的域名 ssl_certificate /etc/ssl/private/example_com.bundle.crt; # 證書鏈 ssl_certificate_key /etc/ssl/private/example_com.key; # 密鑰 ssl_protocols TLSv1.2 TLSv1.1 TLSv1; # 支持的協議,Windows XP 不支持 ssl_prefer_server_ciphers on; # 啓用 Forward Secrecy ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; keepalive_timeout 70; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;
若是您但願至少支持一些老式瀏覽器,而且在可以使用 ECDHE 時儘量使用此算法,您可使用下面的配置:服務器
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS +RC4 RC4";
或者使用最簡單的方案:session
ssl_ciphers "EECDH+aRSA+AES";
爲了不使用 OpenSSL 默認的 1024bit DHE 參數,咱們須要生成一份更強的參數文件:性能
cd /etc/ssl/certs
openssl dhparam -out dhparam.pem 4096
建議您使用性能強勁的平臺生成此文件,例如最新版的至強物理機。若是您只有一臺小型 VPS,請使用 openssl dhparam -out dhparam.pem 2048
命令生成 2048bit 的參數文件。spa
完成後,在 SSL 配置下添加一行:code
ssl_dhparam /etc/ssl/certs/dhparam.pem;
HTTP Strict Transport Security (HSTS) 可使瀏覽器第一次訪問您的站點後即記住僅經過 HTTPS 與您的站點通訊,能夠大大提高安全性。server
在 SSL 配置下添加:
add_header Strict-Transport-Security max-age=63072000; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff;
您須要一個單獨 server
配置用於偵聽 HTTP 80 端口,而後全部發送到這裏的請求定向到 HTTPS 協議。
server { listen 80; # listen [::]:80 ipv6only=on; # 若是您須要同時偵聽 IPv6,請取消此行註釋 server_name example.com; # 您的域名 location / { return 301 https://example.com$request_uri; # 要重定向的地址,請將 example.com 改成您的域名 } }
或者使用 rewrite
:
rewrite ^ https://example.com$request_uri? permanent; # 請將 example.com 改成您的域名
這裏是基於 NGINX 1.4.6 的一份完整配置樣例。請根據您的需求修改使用。
server { listen 80; # listen [::]:80 ipv6only=on; server_name www.example.com; rewrite ^ https://www.example.com$request_uri? permanent; } server { listen 443 ssl; # listen [::]:443 ssl ipv6only=on; server_name www.example.com; ssl on; ssl_certificate /etc/ssl/private/www_example_com.crt; ssl_certificate_key /etc/ssl/private/www_example_com.key; ssl_prefer_server_ciphers on; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; keepalive_timeout 70; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security max-age=63072000; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; root /var/www/example.com; index index.html; location / { try_files $uri $uri/ /index.html; } }