因為 https 採用 ssl 加密,所以部署 https 時需要申請證書,證書的作用就是對瀏覽器和web伺服器雙方的身份驗證。
步驟1:申請證書
我們採用let's encrypt
簽發的免費證書,雖然 let』s encrypt
只有90天的有效期,但是可以用certbot
自動部署工具,進入certbot
主頁,可以看到下圖所示。
let's encrypt 簽發的證書有效期只有90天,甚至希望縮短到60天。有效期越短,洩密後可供監控的視窗就越短。為了支撐這麼短的有效期,就必須自動化驗證和簽發。
因為自動化了,長遠而言,維護反而比手動申請再安裝要簡單。
在certbot
首頁選擇自己的web伺服器型別和作業系統,我們使用的是 nginx+centos6.5,選擇後就會自動跳轉到install頁面,
注意:centos6.5預設的python版本是2.6.6,安裝certbot需要python2.7版本,未來certbot會對python3.x支援(python 3.x support will hopefully be added in the future),
遇到了公升級python的問題,可以參考另一篇部落格:如何公升級python
?1.安裝certbot
2.申請證書
申請證書有兩種驗證方式,一種是standalone,這種驗證方式雖然也可以部署後,但是以後更新證書的時候需要重啟 web 伺服器;
第二種是webroot,就是在**根目錄下生成乙個檔案,通過訪問該檔案來驗證,不需要重啟 web 伺服器。
第一種命令:./path/to/certbot-auto certonly --standalone -d example.com -d www.example.com
第二種命令:./path/to/certbot-auto certonly --webroot -w /var/www/example -d example.com -d www.example.com -w /var/www/baidu -d baidu.com -d www.baidu.com (/var/www/example是**的目錄)
3.測試自動生成證書是否成功
./path/to/certbot-auto renew --dry-run
4.新增定時任務自動更新證書
since let's encrypt certificates last for 90 days,所以我們還是寫個定時任務吧
crontab -u root -e (-u root 表示哪個使用者的定時任務)
新增:* * * */3 * ./path/to/certbot-auto renew --quiet (表示每3個月執行一次)
步驟2:部署https
修改nginx的配置檔案(比如在/usr/local/nginx/conf/nginx.conf),新增如下**,然後重啟nginx
# 部署https
ssl_protocols tlsv1.2;(version1.2 is the only secure protocol version. 請參考ssl labs: increased penalty when tls 1.2 is not supported
)ssl_ciphers high:!anull:!md5;
ssl_prefer_server_ciphers on;
另外還可以加入如下**實現80埠重定向到443,**片段如下
server {
listen 80;
server_name www.example.com example.com;
#實現80埠重定向到443
rewrite ^(.*) https://$server_name$1 permanent;(或return 301
另外:安裝成功的nginx如何新增未編譯模組?
在重啟nginx後發生了錯誤,錯誤如下:
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:117 //說明缺少http_ssl_module模組
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
解決方法如下:
步驟1:檢視nginx編譯安裝時的命令,安裝了哪些模組和ngnix版本
/usr/local/nginx/sbin/nginx -v
會顯示如下資訊:
nginx version: nginx/1.7.7
built by gcc 4.4.7 20120313 (red hat 4.4.7-11) (gcc)
configure arguments: --prefix=/usr/local/nginx --user=www --group=www
步驟2:重新編譯 nginx-1.7.7
wget
tar zxvf nginx-1.7.7.tar.gz
cd nginx-1.7.7
//configure引數要和步驟1的configure arguments一模一樣
make (沒有make install)
步驟3:備份nginx的二進位制檔案
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
步驟4:覆蓋nginx的二進位制檔案
cp objs/nginx /usr/local/nginx/sbin/
cp:是否覆蓋"/usr/local/nginx/sbin/nginx"? y
cp: 無法建立普通檔案"/usr/local/nginx/sbin/nginx": 文字檔案忙 (nginx二進位制檔案繁忙,可以停止nginx,再試一次就可以了)
步驟5:啟動nginx
service nginx start (或/etc/init.d/nginx start)
配置HTTPS全過程
https,是以安全為目標的http通道,簡單講是http的安全版。即http下加入ssl層,https的安全基礎是ssl,因此加密的詳細內容就需要ssl。接著也許會有人問,需要花錢唉,有沒有什麼辦法可以不花錢呢?答案是有的。我們可以自己給自己發乙個證書,也可以進行https通 信,但是如果用瀏覽器...
建站全過程
1 先確定做哪個 如新龍浩 2 獲得資料 包括如下 公司介紹 公司簡介 企業文化,企業榮譽 企業歷程 企業 產品介紹 產品各引數 欄目介紹 一般是 首頁 新聞中心 產品介紹 解決方案 服務支援 關於公司 功能介紹 一般為產品發布 新聞發布,主要是細緻的要求。完成時限 完成的時間 3 製作後台 no1...
感冒全過程
感冒病雖小,卻時不時的來襲,很影響工作和新籤,真的很煩人。既來之則安之,好好應對 不知不覺中又感冒了,前幾天伴隨輕微的咳嗽,一直無大礙,昨天經風一吹開始加重,流清水鼻涕。晚上聽朋友推薦兩種藥 貴州百靈維c銀翹片和北京同仁堂感冒清熱顆粒兩種藥,去藥店一問說這兩種藥不能同時吃,維c銀翹片是治風熱感冒的,...