為什么要使用 HTTPS ?首先來說一下 HTTP 與 HTTPS 協(xié)議的區(qū)別吧,他們的根本區(qū)別就是 HTTPS 在 HTTP 協(xié)議的基礎(chǔ)上加入了 SSL 層,在傳輸層對(duì)網(wǎng)絡(luò)連接進(jìn)行加密。簡單點(diǎn)說在 HTTP 協(xié)議下你的網(wǎng)站是光著身子在奔跑,但到了 HTTPS 下你穿了一件衣服,別人看不到你的肌肉了(當(dāng)然,這好像不是好事,不重要),更安全了一點(diǎn)點(diǎn),就大概這個(gè)意思。 SSL 依靠證書來驗(yàn)證服務(wù)器的身份,并為瀏覽器和服務(wù)器之間的通信加密。采用 HTTPS 的服務(wù)器必須從證書頒發(fā)機(jī)構(gòu) CA(Certificate Authority)申請(qǐng)一個(gè)用于證明服務(wù)器用途類型的證書,當(dāng)然一般都有收費(fèi),而且不便宜,其實(shí)你也可以通過 OpenSSL 自己造一個(gè)證書,這樣有一個(gè)弊端是大家都不信任你造的證書。那怎么辦? 你必須知道的步驟通過上面的簡單介紹你應(yīng)該知道了,要想你的網(wǎng)站支持 HTTPS ,就必須有一個(gè)被信任的證書,那這個(gè)證書就必須由證書頒發(fā)機(jī)構(gòu)(如VeriSign、Microsoft等)頒發(fā)的,否則你就會(huì)遇到如打開 12306.cn 這樣的 你肯定不想用戶打開后,你的網(wǎng)站是上面這樣的,身邊有好多朋友買票時(shí)問過我這是什么意思?我都沒辦法解釋給他們,哎。所以你需要要有下面幾個(gè)東西:
就完了,上面三個(gè)東西可能最麻煩就是搞到一個(gè)被全世界都信任的證書了,沒關(guān)系,現(xiàn)在我試著讓你免費(fèi)獲取一個(gè),注意是免費(fèi)!??! 提供免費(fèi)的證書商也就那么幾個(gè),最知名的可能是 StartSSL ,其他我還知道 Let's Encrypt ,不過這里我用的是國內(nèi)騰訊云的。 感謝騰訊云對(duì)于得到一個(gè) 登錄騰訊云管理平臺(tái) SSL 證書申請(qǐng)地址在這里: https://console./ssl,點(diǎn)擊 上面顯示什么 接下來會(huì)驗(yàn)證你的域名,簡單說就是驗(yàn)證一下這個(gè)域名是不是你的,所以你要在域名解析添加一條 CName 記錄,實(shí)在不懂的話,官方也有怎么添加的文檔。 一般驗(yàn)證過程會(huì)很快,幾個(gè)小時(shí)吧,申請(qǐng)通過后,這時(shí)候你看到狀態(tài)是 下載下來你打開文件會(huì)看到 Nginx 平滑升級(jí)以支持 HTTPS要想讓 Web服務(wù)器支持 HTTPS ,首先你的服務(wù)器肯定要支持 SSL ,所以我們先檢查 Nginx 是否支持 SSL : /usr/local/nginx/sbin/nginx -V 通過命令顯示信息,我們看 安裝 Nginx 可能大家都會(huì),不會(huì)的可以看 從零開始學(xué) Java - CentOS 下安裝 Nginx,但是平滑升級(jí) Nginx 可能你沒有體驗(yàn)過,這樣說吧,在線上服務(wù)器環(huán)境下,你要支持 HTTPS 訪問,但是你發(fā)現(xiàn)你的 Nginx 不支持 SSL ,你肯定不能卸載 Nginx 重新安裝時(shí)加載 SSL 模塊,因?yàn)槟鞘蔷€上服務(wù)器。你只能在現(xiàn)有安裝的 Nginx 下進(jìn)行無痛升級(jí)以以支持 SSL ,這就用到了 Nginx 的 找到你之前安裝 Nginx 時(shí)的編譯目錄,如果你和我一樣找不到或許刪除了,那我們就需要重新下載一個(gè) Nginx 了,當(dāng)然我們是通過 wget -c https:///download/nginx-1.10.1.tar.gztar -zxvf nginx-1.10.1.tar.gzcd nginx-1.10.1 配置,加入 SSL 模塊: ./configure --with-http_ssl_modulemake 注意,千萬不能在像安裝的時(shí)候 備份原 Nginx 執(zhí)行腳本 mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old 把新版本 Nginx 編譯腳本放到可執(zhí)行文件目錄下 cd objs/cp nginx /usr/local/nginx/sbin/ 進(jìn)行平滑升級(jí),命令: make upgrade 這時(shí)候會(huì)輸出這些信息: /usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successfulkill -USR2 `cat /usr/local/nginx/logs/nginx.pid`sleep 1test -f /usr/local/nginx/logs/nginx.pid.oldbinkill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin` 沒問題之后接下來,查看現(xiàn)在目前版本及安裝模塊: /usr/local/nginx/sbin/nginx -V 看到已經(jīng)從 1.4.6 版本升級(jí)到了 1.10.1,而且這種升級(jí)不影響正常訪問的。線上環(huán)境操作也是可以的。 Nginx 配置 HTTPS 服務(wù)編輯配置文件: cd /usr/local/nginx/confvim nginx.conf 拉到最下面,會(huì)看到 HTTPS 配置被注釋掉了。嗯,這是模板,我們就在這配置。 文字版: server { listen 443 ssl; server_name www.domain.com; ssl on; ssl_certificate 1_www.domain.com_bundle.crt; ssl_certificate_key 2_www.domain.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; }} 把上面的 這時(shí)候,你就可以打開瀏覽器訪問一下試試了。正常情況 HTTPS 請(qǐng)求是打不開的,因?yàn)槲覀冞€沒設(shè)置防火墻,記得要開放 其實(shí)到這里,這個(gè)服務(wù)器支持 HTTPS 請(qǐng)求流程已經(jīng)結(jié)束了,但是你發(fā)現(xiàn)好多人在瀏覽器地址欄輸入域名的時(shí)候都不輸入 很簡單,Nginx 中這樣配置就行啦! server { listen 80; server_name www.domain.com; rewrite ^(.*)$ https://$host$1 permanent;} 我們利用 這篇文章講了一下怎么申請(qǐng)免費(fèi)的 HTTPS 證書,然后利用 Nginx 服務(wù)器來配置 HTTPS 請(qǐng)求訪問,并其中順手平滑升級(jí) Nginx,如絲般順滑的升級(jí),不影響正常訪問。HTTPS 方式的傳輸對(duì)我們網(wǎng)站來說應(yīng)該是提高了一些安全性的,況且這種方式又很簡單,可以試著搞一搞。 |
|