概述
http協(xié)議是明文的,也就意味著網(wǎng)站傳輸?shù)臄?shù)據(jù)只要被人抓包就可以看到其中的內(nèi)容衷恭。為了提高安全性此叠,我們需要https協(xié)議,其使用了ssl加密方式随珠,由網(wǎng)站提供證書灭袁,其中包含了網(wǎng)站訪問的RSA公鑰,這樣就開啟了加密訪問窗看。
ssl證書有很多等級和功能茸歧,最基礎(chǔ)的就是提供加密訪問服務(wù),高級的具有一定的認(rèn)證烤芦,就像微博大V認(rèn)證一樣举娩。當(dāng)然有大V認(rèn)證的證書就貴了。我們現(xiàn)在只要有最基礎(chǔ)的加密能讓瀏覽器不和諧到我們的網(wǎng)站就可以了构罗,因此我們可以使用免費的certbot來生成證書铜涉。
certbot簡介
這是一個很有良心的EEF發(fā)起的運動,旨在為全網(wǎng)絡(luò)提供安全便(mian)宜(fei)的ssl證書遂唧,希望大家能夠都用https協(xié)議芙代。certbot提供了一種類似于軟件使用的方式,全自動地為你的網(wǎng)站配置好證書(包括了網(wǎng)站認(rèn)證盖彭,證書制作等系列過程)纹烹,大大的降低了證書使用的門檻。
certbot安裝
- 去cerbot的官網(wǎng)選擇個環(huán)境召边,下個安裝腳本铺呵,比如我的網(wǎng)站環(huán)境腳本是nginx,選完就下載了一個腳本叫certbot-auto.
- 把這個腳本用各種方式上傳到服務(wù)器
scp certbot-auto root@example.com //一個scp的使用例子隧熙,詳情可以百度一下scp
- 運行安裝腳本
./certbot-auto
這樣就自動裝好了certbot這個軟件了片挂,可以使用指令certbot了(注意,只是軟件裝好了贞盯,并不是證書生成好了)
生成證書
因為有個自動認(rèn)證的緣故音念,certbot要自己開個服務(wù)來確認(rèn)到底你的域名是不是指向你這個服務(wù)器的。所以要先把自己的nginx服務(wù)關(guān)掉躏敢,防止自己的443端口占用了certbot將要使用的端口闷愤。
service nginx stop
接著正式配置自己的證書,每一個-d后面都是一個域名件余,可以無限添加讥脐,但是悲傷的是它不支持通配符域名..
certbot certonly --standalone --email admin@example.com -d example.com -d www.example.com -d other.example.net
指令運行結(jié)束以后會有提示遭居,要么錯誤了給你一些錯誤信息,要么成功了會提示一個congratulation!攘烛,然后給你生成的*.pem證書文件路徑魏滚。我們就有了一個證書了。
證書部署
舉個例子坟漱,在上一步結(jié)束后我的證書是在/etc/letsencrypt/live/fafafa.com
到這個目錄下會有這么幾個文件cert.pem
chain.pem
fullchain.pem
privkey.pem
這些文件的功能是非正交的鼠次,只要其中的若干個組合一下就可以實現(xiàn)配置,并不一定要全部配置芋齿。而且其中的一個可以生成另外的幾個文件腥寇,這個說來就要到pem證書生成體系里面講了。
我們來看怎么配置到nginx上觅捆。
原來普通的http網(wǎng)站配置是
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name fafafa.com;
root /var/www/html;
}
現(xiàn)在加上ssl_certificate*的配置赦役,并把端口改成443
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name fafafa.com;
root /var/www/html;
ssl_certificate "/etc/letsencrypt/live/fafafa.com/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/fafafa.com/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
}
檢測并重啟一下nginx
nginx -t
service nginx restart
開始訪問你的https://fafafa/com吧!