閱讀396 返回首頁    go 阿裏雲 go 技術社區[雲棲]


阿裏雲盾證書服務助力博客裝逼成功

寫在開始

前段時間網站全部靜態文件都上了阿裏雲CDN,session存儲和緩存交給了阿裏雲Redis,從此也走上了高逼格的道路,並成功裝逼了一把。

8

但是,樓主覺的這還遠遠不夠,在這個信息安全重於泰山的時代。穀歌的搜索和Chrome瀏覽器,早就 推動往HTTPS協議的過渡,提醒網站明文傳輸的HTTP“不安全”。同樣,Facebook、Twitter也陸續加入了陣營。國內的百度也大魄力推進並規劃HTTPS項目,也是希望產業界認識到“HTTP = 不安全”的嚴重性。

周圍的很多小夥伴們也加入HTTPS的陣營,然而,我等屁民,網站怎麼還好意思使用HTTP?(當然,對於我小小的博客而言,有必要麼?有必要麼?有必要麼?哈哈哈,真沒必要,真沒必要,真沒必要)。

HTTPS簡介

HTTPS其實是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸的數據都是加密後的數據。具體是如何進行加密,解密,驗證的,且看下圖。

0

相關環境

操作係統:Linux centos 6.5
Web服務器:nginx/1.10.3
博客程序:Typecho
內容分發:阿裏雲CDN

阿裏雲證書服務

常見問題:https://help.aliyun.com/knowledge_list_page/42212/2.html

不要感謝我 請叫我雷鋒。

00

申請SSL證書

阿裏雲控製台-安全(雲盾)-證書服務。

點擊右上角的購買證書即可,這裏大家可以選擇免費型DV SSL。免費數字證書,最多保護一個明細子域名,不支持通配符,一個阿雲帳戶最多簽發20張免費證書。證書品牌:賽門鐵克是 SSL/TLS 證書的領先提供商,為全球一百多萬台網絡服務器提供安全防護。選擇賽門鐵克後,證書頒發機構 (CA) 將妥善保護您的網站和信譽,讓您安枕無憂。

1

好了,至於如何購買,如何簽發,這裏就不做過多的介紹。傻瓜操作,跟淘寶下單一樣,老太太都會。當然,這裏要注意的一點是,證書不會立即簽發,配置好以後,需要稍等片刻(一般10-30分鍾的樣子,有時候更快)。

配置SSL證書

推送CDN

由於使用了阿裏雲的CDN,阿裏雲證書也提供了相關的推送服務。點擊列表推送按鈕,如下:

2

下載證書

阿裏雲為各種Web服務器都提供了相應的證書,點擊列表下載,如下:

3

配置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>

配置成功

按照以上流程,基本不會出現問題了,清除瀏覽器緩存訪問下自己的網站,瀏覽器會顯示安全的小綠鎖標識。

4

好了,配置成功以後,有沒有一種被綠綠的感覺?

5

最後更新:2017-06-06 17:02:39

  上一篇:go  《Adobe Flash CS4中文版經典教程》——1.12 檢查更新
  下一篇:go  費爾德曼的百吉餅實驗:人類的誠實程度其實超出你的想象!