點亮你的 HTTPS?原來這么簡單!!
HTTPS 如今已經(jīng)相當(dāng)普及,但是仍然有不少的同學(xué),沒有學(xué)過如何部署 HTTPS,剛好明哥前段時間折騰網(wǎng)站 ,剛好可以把這個過程詳細的記錄下來,教大家如何將你的 HTTP 網(wǎng)站上點亮 HTTPS 。
要想使用 HTTPS ,要做的事情還是有點多的:
- 準備一個域名和服務(wù)器(自行準備)
- 并將該域名解析到你的服務(wù)器ip上
- 生成 CSR 證書請求文件
- 拿著 CSR 文件去申請證書
- 把申請到的證書部署到你的服務(wù)器上
1. 設(shè)置 DNS 解析
我有一個域名 iswbm.com,其下有好多的子域名,比如寫 Python 的在線博客 python.iswbm.com,還有寫 Golang 的在線博客 golang.iswbm.com,還有我的圖床 image.iswbm.com 等等。
這里新建了個子域名 demo.iswbm.com ,并設(shè)置其解析到 我的服務(wù)器上,如下圖(服務(wù)器 ip 已碼掉)。
2. 搭建 HTTP 站點為了方便,我這里就使用 Apache 放了一個 HTTP 的靜態(tài)網(wǎng)頁,方法很簡單,大家百度即可。
3. 申請 SSL
證書SSL 數(shù)字證書怎么來的呢?
你可以自己制作,也可以向CA權(quán)威機構(gòu)申請。
二者的區(qū)別是:
- 自己頒發(fā)的證書,需要客戶端驗證通過,也就是需要用戶手動安裝證書,并將其設(shè)置為受信任的根證書。但即使如此,瀏覽器上( chrome, firefox)仍不認可這種自簽名證書,會在地址欄前面提示連接不安全,手動安裝證書后,也會提示該證書無效。若想要繼續(xù)訪問,并忽略該提示,可以選擇繼續(xù)訪問。
- 向權(quán)威的數(shù)字證書認證機構(gòu)申請,由于這些機構(gòu)在網(wǎng)民的電腦里都有相應(yīng)的根證書,且這些機構(gòu)是絕對可信任的。因此你在訪問網(wǎng)站時,不會提示連接不安全。
下面,我將分別向你展示這兩種方法,都是如何操作的。
第一種:向權(quán)威CA機構(gòu)申請
在阿里云和騰訊云都可以 進行 SSL 證書的申請,證書的申請有付費的(價格也不便宜),也有免費的,看了一圈,只有騰訊云有免費的 SSL 證書的申請渠道(阿里云聽說以前也有,后來關(guān)閉了)。
本篇文章,僅以演示教學(xué)之用,所以只用騰訊云的免費證書的就足夠啦。
登陸騰訊云,可以看到SSL 證書有分很多種,企業(yè)型的,企業(yè)型專業(yè)版的,增強型,增強型專業(yè)版的,還有域名型免費版。
點擊選擇 域名型免費版
點擊 免費快速申請后,填寫域名和你的個人郵箱
再點擊下一步,會需要你驗證域名所有權(quán),驗證方式有如下三種
- 自動DNS驗證
- 手動DNS驗證
- 文件驗證
但由于我的域名不是騰訊云平臺解析的,因此沒有 自動DNS驗證的選項,只有其他兩種
點擊 確認申請 后,會提示你進入域名驗證所有權(quán)的流程,這里我選擇 手動DNS驗證。
審核通過后,3s 內(nèi)就會給你頒發(fā)證書,你可以從控制臺點擊證書下載。
下載下來的會是一個 zip 包。
解壓一下,會有不同的服務(wù)器類型(有 Apache、IIS、Nginx、Tomcat)的文件夾。
我使用的是 Apache ,在這個文件夾下面有三個文件:
1_root_bundle.crt:根證書
2_demo.iswbm.com.crt:域名證書
3_demo.iswbm.com.key:私鑰文件
這三個文件,下一步會部署于我的服務(wù)器上。
接下來講第二種 SSL 證書申請方式。
第二種:自簽名的 SSL 證書
沒有權(quán)威的第三方 CA 機構(gòu)給自己頒發(fā)證書,那就自己給自己頒發(fā)咯。
自簽名 SSL 的證書制作過程,可以分為兩步:
自己要當(dāng) CA 機構(gòu),那 CA 有的 CA 根證書、私鑰 一樣都不能少,因此第一步:生成 CA 的 crt 證書 和 CA 的私鑰。
要申請證書,首先服務(wù)器自己要有一個密鑰對(公鑰和私鑰)
拿著上面生成的公鑰,制作一個 CSR 證書申請文件
用第一步的 CA 私鑰,給這個 CSR 簽名,生成咱所需要的 SSL 數(shù)字證書文件。
步驟很多,命令很多,命令所帶的參數(shù)更多,對于只想學(xué)習(xí)證書簽發(fā)流程的你,把這些命令都背下來,并不是一個好的選擇,畢竟這種事可能也干不了幾次。
因此,我把這些步驟、命令,都整合成一個 shell 腳本,你只要執(zhí)行這個腳本就行了。
- $ bash create_self-signed-cert.sh --ssl-domain=demo.iswbm.com --ssl-trusted-domain=demo.iswbm.com --ssl-size=2048 --ssl-date=3650
對應(yīng)的參數(shù)的解釋,在腳本中都有解釋
這個腳本過長,不好直接貼上來,我將它放在我的公眾號(Python編程時光)后臺,你可以直接回復(fù)『證書簽名』直接獲取下載。
執(zhí)行完成后,會在當(dāng)前目錄下生成好多個文件。
其中,只有兩個文件對我們有用
4. 部署 SSL 證書
根據(jù)服務(wù)器的類型不同,部署安裝的方式有有所區(qū)別,騰訊云的操作文檔已經(jīng)非常詳細了,你可以通過這個鏈接訪問到如下的文檔:https://cloud.tencent.com/document/product/400/4143
這里我將以 CentOS 7.2 + Apache 為例,演示如何部署 SSL 證書。
先安裝一下 mod_ssl
- $ yum install -y mod_ssl
安裝完后,在 /etc/httpd/conf.d/ 目錄下 會有個 ssl.conf 文件。
編輯修改這個文件,以下是我的配置供你參考
- <VirtualHost 0.0.0.0:443>
- DocumentRoot "/var/www/html"
- #填寫證書名稱
- ServerName demo.iswbm.com
- #啟用 SSL 功能
- SSLEngine on
- #證書文件的路徑
- SSLCertificateFile /etc/pki/tls/certs/demo.iswbm.com.crt
- #私鑰文件的路徑
- SSLCertificateKeyFile /etc/pki/tls/private/demo.iswbm.com.key
- #根證書文件的路徑
- SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
- </VirtualHost>
如果你的證書是從權(quán)威 CA 機構(gòu)上申請來的。
比如我上面從騰訊云上申請來的,那么這三個文件就是從已經(jīng)從騰訊云的控制臺上下載下來的那三個文件。
在修改完后,務(wù)必記得把下載的這三個文件,放到相應(yīng)的目錄中去。
配置完 ssl.conf,可能還需要你 check 一下 /etc/httpd/conf/httpd.conf 的一些配置,這些配置一般用默認的就可以,但是以防萬一,還是寫一下吧
- Include conf.modules.d/*.conf
寫這一行的目的,就是為了 httpd 去加載 mod_ssl 這個模塊
- $ cat /etc/httpd/conf.modules.d/00-ssl.conf
- LoadModule ssl_module modules/mod_ssl.so
一切配置完成后,記得重啟一下 httpd 服務(wù)
- $ systemctl restart httpd
然后使用 chrome 訪問一下 https//demo.iswbm.com 看看,大功告成。
而如果你的證書是自簽名的。
ssl.conf 配置文件下的應(yīng)該改成這樣
- <VirtualHost 0.0.0.0:443>
- DocumentRoot "/var/www/html"
- #填寫證書名稱
- ServerName demo.iswbm.com
- #啟用 SSL 功能
- SSLEngine on
- #證書文件的路徑
- SSLCertificateFile /etc/pki/tls/certs/tls.crt
- #私鑰文件的路徑
- SSLCertificateKeyFile /etc/pki/tls/private/tls.key
- </VirtualHost>
同時記得把這兩個文件也拷貝到相應(yīng)的目錄下
- $ cp tls.crt /etc/pki/tls/certs/
- $ cp tls.key /etc/pki/tls/private/
最后還是不要忘了重啟 httpd
- $ systemctl restart httpd
試著用 chrome 訪問一下,可以看到 chrome 提示該連接不安全
如果執(zhí)意要訪問,可以點擊左下方的 繼續(xù)前往,這樣以后再訪問的時候,就不會再出現(xiàn)這個警告頁面了。
不安全 三個字,讓人很沒有安全感,那有沒有辦法去掉呢?
答案是,沒有,只要是自簽名的證書,在 chrome ,firefox 等主流瀏覽器看來都是不安全的。
即使你把這個根證書添加到你的受信任的證書列表中,也是徒然。
下面就試著來安裝一下這個根證書。
按照下圖指示,拖動證書到本地磁盤上。
打開 Mac 上的 鑰匙串訪問
點擊 登陸,然后再拖動這個證書到窗口中進行安裝
右鍵該證書,點擊 顯示簡介,跳出下面的界面后,再點擊 信任,把 IP 安全選擇選為 始終信任。
設(shè)置完后,再訪問下 demo.iswbm.com ,仍然顯示連接不安全,并且證書是無效的
點擊證書,顯示證書,該證書確實已經(jīng)放入信任列表中了。

到這里文章就結(jié)束了,你應(yīng)該已經(jīng)了解點亮 HTTPS 整個流程是怎么樣的。
本文轉(zhuǎn)載自微信公眾號「Python編程時光」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Python編程時光公眾號。