10分钟免费开启全站https
title: 10分鐘開啟全站https date: 2018-05-25 16:03:31 tags:
- https
- ubuntu
持續(xù)了1個(gè)多月的備案,今天收到短信終于下來了。
上篇水文,大概的記錄了作為前端利用gitlab.com利用gitlab-ci開啟CI自動(dòng)部署。前端的gitlab的ci初嘗試。這篇文章就要開始記錄下我如何開啟https。
什么是https?
https 是什么,不是本文的重點(diǎn),直接跳過,https 的好處在這里也不仔細(xì)講。
什么是 Let’s Encrypt?
部署 https 網(wǎng)站的時(shí)候需要證書,證書由 CA 機(jī)構(gòu)簽發(fā),大部分傳統(tǒng) CA 機(jī)構(gòu)簽發(fā)證書是需要收費(fèi)的,這不利于推動(dòng) https 協(xié)議的使用。Let’s Encrypt 也是一個(gè) CA 機(jī)構(gòu),但這個(gè) CA 機(jī)構(gòu)是免費(fèi)的!!!也就是說簽發(fā)證書不需要任何費(fèi)用。
什么是全站https,也就是通配符證書?
域名通配符證書類似 DNS 解析的泛域名概念,通配符證書就是證書中可以包含一個(gè)通配符。主域名簽發(fā)的通配符證書可以在所有子域名中使用,比如 .example.com、bbs.example.com、bbs.example.com。 2018 年 3 月 14 日,Let’s Encrypt 對(duì)外宣布 ACME v2 已正式支持通配符證書。這就意外味著用戶可以在 Let’s Encrypt 上免費(fèi)申請(qǐng)支持通配符的 SSL 證書。以前配置子域名也是需要每個(gè)域名單獨(dú)的申請(qǐng)證書的,意思是現(xiàn)在可以直接用*.example.com這個(gè)證書,讓全站實(shí)現(xiàn)https。
下面本文就簡(jiǎn)單的記錄了我開啟全站https的步驟,10分鐘就能搞定,首先從blog子域名開始。
開始配置
準(zhǔn)備工作
1. 一個(gè)頂級(jí)域名:peiqixin.com # 我這里用的是 2. 一臺(tái)自己的云服務(wù)器 # 我這里用的是我的那個(gè)小水管,之前在騰訊云擼的羊毛,6年360塊錢的服務(wù)器,我這里服務(wù)器的系統(tǒng)用的是ubuntu復(fù)制代碼下面的所有操作都是在你的服務(wù)器上面,(我的服務(wù)器系統(tǒng)是ubuntu 16.04),其他的系統(tǒng)的操作也差不多。
添加一個(gè)blog域名解析
下載Nginx
安裝 nginx 。如果你已經(jīng)安裝可以跳過這步。
sudo apt-get update sudo apt-get install nginx 復(fù)制代碼如果不會(huì)nginx的基本操作和基本配置,建議還是先去了解一下 nginx 的基本配置,比如如何的開啟一個(gè)web服務(wù)器,nginx的基本操作和編寫配置(不是必須)。
下載certbot客戶端
sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install python-certbot-nginx 復(fù)制代碼安裝的時(shí)候一路 enter 就完事兒了。
獲取 Let’s Encrypt certificate
cerbot 提供 nginx 配置以幫助我們重新配置我們以前的 nginx 配置,以便我們可以使用我們即將獲得的 SSL 證書。
## 我的域名是peiqixin.com。這里要換成你要配置的域名 sudo certbot --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns --installer nginx -d *.peiqixin.com -d peiqixin.com 復(fù)制代碼然后又是一路的確定選擇確定就可以了。
但是請(qǐng)注意這一步,就暫時(shí)不要繼續(xù)enter了
請(qǐng)把這段token復(fù)制下來。 打開你的域名提供商,就是你之前買域名的地方。添加一個(gè)域名解析。
記錄選擇 選擇 TXT 主機(jī)記錄填入 _acme-challenge 記錄值就填入剛才你保存下來的token
點(diǎn)擊保存之后,certbot客戶端會(huì)去確定你是否在正確的添加了解析。
如果正確的添加了解析。 接下來
Which server blocks would you like to modify? ------------------------------------------------------------------------------- 1: File: /etc/nginx/sites-enabled/default Addresses: [::]:80 default_server, 80 default_server Names: _ HTTPS: No... ------------------------------------------------------------------------------- Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 復(fù)制代碼將呈現(xiàn)nginx配置中的服務(wù)器塊列表,供您選擇要將證書部署到的服務(wù)器塊。 反正我用不上,這里選擇cancel,輸入c,enter繼續(xù)。
接下來
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ------------------------------------------------------------------------------- 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. 復(fù)制代碼這一步就是讓你選擇是否將http流量重定向到建議的https。既然是全站https,所有的訪問都應(yīng)該走h(yuǎn)ttps,選擇2,enter。提供與前一階段相同的列表,輸入c,按enter繼續(xù)。
接下來,當(dāng)你看到下面的一段就表明你已經(jīng)配置好了。
請(qǐng)把
/etc/letsencrypt/live/peiqixin.com/fullchain.pem /etc/letsencrypt/live/peiqixin.com/privkey.pem 復(fù)制代碼這2個(gè)地址記下來
配置nginx
sudo nginx -t 復(fù)制代碼找到你的nginx配置文件的地址
sudo mkdir conf.d #創(chuàng)建一個(gè)配置nginx的目錄,不可能把所有的配置寫在一個(gè)文件里面,以后也不好維護(hù) 復(fù)制代碼再在nginx的默認(rèn)配置文件nginx.conf的http模塊里面添加
include /etc/nginx/conf.d/*.conf; #引入所有的配置文件 復(fù)制代碼在conf.d文件夾里面創(chuàng)建一個(gè)index.conf,創(chuàng)建主配置文件負(fù)責(zé)監(jiān)聽80端口并轉(zhuǎn)發(fā)請(qǐng)求。
server {listen 80;server_name peiqixin.com www.peiqixin.com blog.peiqixin.com;rewrite ^(.*) https://$host permanent; } 復(fù)制代碼創(chuàng)建https配置文件。創(chuàng)建各域名配置文件監(jiān)聽443端口(可以按域名分開,也可以寫一個(gè)文件里,我為了方便寫在一個(gè)文件里)
server {listen 443;server_name peiqixin.com www.peiqixin.com;ssl on;ssl_certificate /etc/letsencrypt/live/peiqixin.com/fullchain.pem; ## 這個(gè)就是你配置certbot最后一步要你記錄下來的地址ssl_certificate_key /etc/letsencrypt/live/peiqixin.com/privkey.pem;ssl_session_cache shared:SSL:10m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {root /home/ubuntu/blog; ##這里我用hexo博客生成器生成的靜態(tài)html,js,css都放在了這個(gè)文件index index.html index.htm;}}server {listen 443;server_name blog.peiqixin.com;ssl on;ssl_certificate /etc/letsencrypt/live/peiqixin.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/peiqixin.com/privkey.pem;ssl_session_cache shared:SSL:10m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {root /home/ubuntu/blog;index index.html index.htm;}} 復(fù)制代碼退出保存。檢測(cè)一下nginx的配置是否有語法錯(cuò)誤
sudo nginx -t 復(fù)制代碼重啟nginx
訪問blog.peiqixin.com,就會(huì)看見
再訪問peiqixin.com 都是自動(dòng)的從http跳轉(zhuǎn)到https。接下來想要添加一個(gè)api.peiqixin.com域名為https。重復(fù)上面的第一步和最后一步,然后就可以在api.peiqixin.com域名旁邊看到小綠鎖。
更新證書
因?yàn)檫@個(gè)https證書是有3個(gè)月的期限的,差不多快到快要到3個(gè)月的時(shí)候,letsencrypt會(huì)發(fā)郵件給你,告訴你的證書快要過期。這個(gè)時(shí)候你就可以自己重新安排下證書了。 (你也可以寫個(gè)定時(shí)腳本,但是那個(gè)不是本文的關(guān)注的地方,而且我也沒寫)
certbot renew // 上面的指令我跑不成功,就換成下面的這條,等于說是重新的申請(qǐng)下證書,不用改配置,30秒就選擇完了 // sudo certbot --force-renew 復(fù)制代碼參考資料
總結(jié)
以上是生活随笔為你收集整理的10分钟免费开启全站https的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开源方案搭建可离线的精美矢量切片地图服务
- 下一篇: 飞天技术汇“2018云栖大会·上海峰会”