轉: https://www.qikqiak.com/post/make-https-blog/html
誰都不肯意在使用網站服務的時候,被噁心的運營商劫持加上一些他們的服務(真的很賤,不是嗎?),不過這能難道咱們程序員嗎?固然不能,上https
,老子全站https
,你再劫持給我看看。nginx
https
證書服務大部分都是收費的,並且很貴,阿里雲能夠申請一個免費的證書,只能綁定一個域名,這裏咱們使用更加友好的免費https
服務:Let’s Encrypt程序員
若是要啓用HTTPS,咱們就須要從證書受權機構(如下簡稱CA) 處獲取一個證書,Let's Encrypt
就是一個 CA。咱們能夠從Let's Encrypt
得到網站域名的免費的證書。這篇文章也主要講的是經過 Let's Encrypt + Nginx
來讓網站升級到HTTPS
。web
Certbot是Let's Encrypt
官方推薦的獲取證書的客戶端,能夠幫咱們獲取免費的Let's Encrypt
證書。安裝命令:shell
yum install certbot
生成證書:bash
certbot certonly --email icnych@gmail.com --agree-tos --webroot -w /var/www/blogs -d blog.qikqiak.com
其中-w後面是網站根目錄,-d後面是網站域名,因此須要保證目錄存在而且能夠正常訪問。app
執行完生成證書的命令後,會生成相關的證書文件到/etc/letsencrypt/live/blog.qikqiak.com/
目錄下面:post
$ ls /etc/letsencrypt/live/blog.qikqiak.com/ cert.pem chain.pem fullchain.pem privkey.pem README
至此證書生成完成。網站
證書生成完成後,還須要更改咱們的Nginx
配置服務,主要是監聽443端口,啓用SSL
,並配置SSL
的證書路徑(公鑰,私鑰的路徑)。以下:ui
server { listen 443; ssl on; ssl_certificate /etc/letsencrypt/live/blog.qikqiak.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/blog.qikqiak.com/privkey.pem; server_name blog.qikqiak.com; root /home/notes/apps/blog; index index.html; }
配置更改事後從新加載Nginx
便可生效:
nginx -s reload
如今咱們訪問https://blog.qikqiak.com
已經能夠正常訪問了,可是還有一個問題就是訪問http://blog.qikqiak.com
依然仍是http
的,因此咱們須要配置將http
更改成https
,這樣就完美了。這裏能夠用到以前咱們的301跳轉來解決這個問題,完整的配置以下:
server { listen 80; server_name blog.qikqiak.com; rewrite ^(.*)$ https://$host$1 permanent; } server { listen 443; ssl on; ssl_certificate /etc/letsencrypt/live/blog.qikqiak.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/blog.qikqiak.com/privkey.pem; server_name blog.qikqiak.com; root /home/notes/apps/blog; index index.html; }
到這裏咱們已經將博客https
化了,可是尚未完的,因爲Let's Encrypt
證書的有效期只有90天,因此在到期以前咱們須要更新整數,certbot
給咱們已經提供了這樣的更新命令,咱們只須要將更新命令添加到crontab
下面按期更新便可:
$ crontab -l 30 5 1 * * root /usr/bin/certbot renew --renew-hook "/usr/sbin/nginx -s reload"
到這一步纔算革命成功了~~~ 咱們不再用擔憂噁心的害蟲了~~~
「真誠讚揚,手留餘香」