阿裏雲盾證書服務助力博客裝逼成功
寫在開始
前段時間網站全部靜態文件都上了阿裏雲CDN,session存儲和緩存交給了阿裏雲Redis,從此也走上了高逼格的道路,並成功裝逼了一把。
但是,樓主覺的這還遠遠不夠,在這個信息安全重於泰山的時代。穀歌的搜索和Chrome瀏覽器,早就 推動往HTTPS協議的過渡,提醒網站明文傳輸的HTTP“不安全”。同樣,Facebook、Twitter也陸續加入了陣營。國內的百度也大魄力推進並規劃HTTPS項目,也是希望產業界認識到“HTTP = 不安全”的嚴重性。
周圍的很多小夥伴們也加入HTTPS的陣營,然而,我等屁民,網站怎麼還好意思使用HTTP?(當然,對於我小小的博客而言,有必要麼?有必要麼?有必要麼?哈哈哈,真沒必要,真沒必要,真沒必要)。
HTTPS簡介
HTTPS其實是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸的數據都是加密後的數據。具體是如何進行加密,解密,驗證的,且看下圖。
相關環境
操作係統:Linux centos 6.5
Web服務器:nginx/1.10.3
博客程序:Typecho
內容分發:阿裏雲CDN
阿裏雲證書服務
常見問題:https://help.aliyun.com/knowledge_list_page/42212/2.html
不要感謝我 請叫我雷鋒。
申請SSL證書
阿裏雲控製台-安全(雲盾)-證書服務。
點擊右上角的購買證書即可,這裏大家可以選擇免費型DV SSL。免費數字證書,最多保護一個明細子域名,不支持通配符,一個阿雲帳戶最多簽發20張免費證書。證書品牌:賽門鐵克是 SSL/TLS 證書的領先提供商,為全球一百多萬台網絡服務器提供安全防護。選擇賽門鐵克後,證書頒發機構 (CA) 將妥善保護您的網站和信譽,讓您安枕無憂。
好了,至於如何購買,如何簽發,這裏就不做過多的介紹。傻瓜操作,跟淘寶下單一樣,老太太都會。當然,這裏要注意的一點是,證書不會立即簽發,配置好以後,需要稍等片刻(一般10-30分鍾的樣子,有時候更快)。
配置SSL證書
推送CDN
由於使用了阿裏雲的CDN,阿裏雲證書也提供了相關的推送服務。點擊列表推送按鈕,如下:
下載證書
阿裏雲為各種Web服務器都提供了相應的證書,點擊列表下載,如下:
配置Nginx
上傳證書到執行目錄,由於是針對Typecho博客程序的一些偽靜態配置,可能不盡相同,如下是相關conf配置:
server{
#監聽的443端口
listen 443;
server_name blog.52itstyle.com;
index index.php;
ssl on;
#證書路徑 星號替換成自己的就ok
ssl_certificate /usr/local/nginx/cert/2140******80632.pem;
#私鑰路徑
ssl_certificate_key /usr/local/nginx/cert/2140******0632.key;
#緩存有效期
ssl_session_timeout 5m;
#可選的加密算法,順序很重要,越靠前的優先級越高.
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#安全鏈接可選的加密協議
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
root /mnt/www/domains/blog.52itstyle.com;
error_page 404 /404.html;
#Custom rules Start
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
#Custom rules End
location = /500.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
access_log /usr/local/nginx/logs/blog.52itstyle.com.access.log main;
}
location ~ /\.ht {
deny all;
}
}
Typecho設置
登錄Typecho後台 -> 設置 -> 基本設置 -> 站點地址改成https的域名是必須的。
編輯Typecho站點根目錄下的文件config.inc.php加入下麵一行配置,否則網站後台還是會調用HTTP資源。
/** 開啟HTTPS */
define('__TYPECHO_SECURE__',true);
由於Chrome瀏覽器對HTTPS要求較高,其他瀏覽器已經顯示小綠鎖,但是Chrome還是有警告提示。這時候你隻需F12查看,如果存在url連接還是http請求穀歌下就不會顯示小綠鎖。
如果使用了第三方模版,登錄Typecho後台 ->控製台-> 外觀 ->設置外觀 -> cdn鏡像地址改成https的域名。
如果你使用的是原生評論,評論表單的action地址還是HTTP,找到站點主題目錄下的comments.php文件,並搜索$this->commentUrl(),將其替換為:echo str_replace("http","https",$this->commentUrl()); 最後保存(還好使用的是暢言,已經接入HTTPS了)。
阿裏雲的CDN 400地址居然是HTTP,顯然不符合要求,暫時去掉了。
-
文章中的圖片地址居然是絕對路徑,由於以前是HTTP,所以還要替換一下數據庫部分內容,執行以下語句(替換成自己的URL即可)
UPDATE `blog`.`typecho_contents` SET TEXT=REPLACE (TEXT,'https://blog.52itstyle.com','https://blog.52itstyle.com') ;
HTTP重定向到HTTPS
好了,到此為止,重啟Nginx,你的網站已經可以跑在HTTPS上麵了。但是這樣HTTP的方式還是可以訪問的,我們可以通過WEB服務器(Ningx)將80端口(HTTP)重定向到443端口(HTTPS),強製全站HTTPS。當然,本人並沒有配置成功,不是無法訪問就是重定向次數過多,不知道是否與CDN有關?逗比了不想捯飭了,如有人配置成功,敬請告之。
目前的解決方案,在公用header.php中添加如下JS代碼:
<script type="text/javascript">
var url = window.location.href;
if (url.indexOf("https") < 0) {
url = url.replace("http:", "https:");
window.location.replace(url);
}
</script>
配置成功
按照以上流程,基本不會出現問題了,清除瀏覽器緩存訪問下自己的網站,瀏覽器會顯示安全的小綠鎖標識。
好了,配置成功以後,有沒有一種被綠綠的感覺?
最後更新:2017-06-06 17:02:39