獲取免費SSL證書
接上篇:CentOS6.6體驗_LNMP。下面將在nginx中配置Let's Encrypt頒發的免費SSL證書。安裝方式參考Certbot,文章寫的很清楚,這個方法我沒有試。
另一種安裝方式是Using Free SSL/TLS Certificates from Let’s Encrypt with NGINX,我用這個裝的,挺方便的。其中提到的文件/etc/letsencrypt/configs/my-domain.conf可以放在/etc/letsencrypt/my-domain.conf。這裡把證書生成後的nginx站點配置抄一下:
server { listen 443 ssl default_server; server_name my-domain; #ssl on;#有的網站配置中有寫這一句,但是這篇文章中並沒有,我也沒加,沒發現有什麼問題 ssl_certificate /etc/letsencrypt/live/my-domain/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/my-domain/privkey.pem; ... }
檢查nginx站點配置並重啟nginx
nginx -t && nginx -s reload
把http重定向到https
下面兩種方法據說第一種比第二種快,我也不知道為什麼,希望大神解答。
server { listen 80; server_name domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name domain.com; ssl on; # other }
server { listen 80; server_name domain.com; rewrite ^(.*) https://$server_name$1 permanent; } server { listen 443 ssl; server_name domain.com; ssl on; # other }
自動更新Let's Encrypt的免費SSL證書(未完成)
按照參考鏈接Using Free SSL/TLS Certificates from Let’s Encrypt with NGINX設置好定時任務後發現renew‑letsencrypt.sh並沒有執行成功。因爲腳本中第一行需要選擇1還是2,自動運行時並沒有給出。所以我還是自己手動執行一下那個腳本,也不費事。
nginx配置HSTS
HTTP Strict Transport Security (通常简称为HSTS) 是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源, 禁止HTTP方式.
server { listen 443 ssl; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # This 'location' block inherits the STS header location / { root /usr/share/nginx/html; } # Because this 'location' block contains another 'add_header' directive, # we must redeclare the STS header location /servlet { add_header X-Served-By "My Servlet Handler"; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; proxy_pass http://localhost:8080; } }
本文更新於 2016/10/28。