記錄啟用HTTPS的全過程

2022-03-28 22:09:23 字數 3925 閱讀 3908

因為 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銀翹片是治風熱感冒的,...