申請免費 ssl 憑證並架設在wordpress

申請免費 ssl 憑證並架設在wordpress
5 (100%) 1 票數

今天要來介紹  Let’s Encrypt ,這是一家 憑證管理中心(Certification Authority,CA),提供免費的 SSL 憑證,他們希望簡化憑證申請流程以及推動全球網站都採用https的加密傳輸理念 encrypt the entire web 。

 

我們今天來介紹如何手動建立這個免費的憑證,而為什麼採用手動而不是自動呢?因為自動的方式雖然快速但很難理解從中的原理然而自動的方式通常比較適用於自行架設的主機而不適合在虛擬空間。

由於這家建立憑證的方式是使用指令的方式而非WEB的方式,所以會比較繁雜,但實際上是很簡單的,首先我們需要準備一臺擁有PYTHON的環境,我們這裡採用virtualbox 建立一臺 ubuntu14.04 並且安裝GIT,當然也可以直接在LINUX伺服器上直接使用。
建議在所有動作前先安裝我們開發的插件:http://bit.ly/1TdPJdq 
這個插件提供 如果是 nginx的主機並且使用 反向代理的功能,並且整合圖片上傳後的https的問題。
 
教學開始:
1、首先下載憑證建立的原始碼,並且進入資料夾
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
 再來執行腳本來建立憑證
  -d 後面加入自己的域名,我們這裡用webbiz.tw作為範例
./letsencrypt-auto certonly -a manual -d webbiz.tw -d www.webbiz.tw
2、接下來你應該會看到 類似下面的提示
Make sure your web server displays the following content at
http://webbiz.tw/.well-known/acme-challenge/bFQ0LDDkn75K3LmvFIUvEwq2Op1s9-ulerGSw4sh0Is
before continuing:
bFQ0LDDkn75K3LmvFIUvEwq2Op1s9-ulerGSw4sh0Is.PNcckxEtBH9uCepl5Eo_BMEHTng23uAdFJ_jVtfSxLg
Content-Type header MUST be set to text/plain.
3、從提示中可以得知,我們必須在主機底下建立一個 .well-known/acme-challenge/bFQ0LDDkn75K3LmvFIUvEwq2Op1s9-ulerGSw4sh0Is
並且內容為 
bFQ0LDDkn75K3LmvFIUvEwq2Op1s9-ulerGSw4sh0Is.PNcckxEtBH9uCepl5Eo_BMEHTng23uAdFJ_jVtfSxLg
完成之後 可以得到4個檔案
/etc/letsencrypt/archive/webbiz.tw/cert1.pem
/etc/letsencrypt/archive/webbiz.tw/chain1.pem
/etc/letsencrypt/archive/webbiz.tw/fullchain1.pem
/etc/letsencrypt/archive/webbiz.tw/privkey1.pem
4、我們把它複製出來,之後放入線上的主機,我們這裡使用nginx 作為範例
首先我們建立一個 Diffie-Hellman 安全協議  ,讓我們更安全:
  • sudo openssl dhparam -out /etc/nginx/dhparam.pem 2048
 接下來按照一下範本 把參數換置後,最後重開 nginx 即可。
nginx  範本
server {
listen 443 ssl;ssl_certificate         /<path>/fullchain.pem;
ssl_certificate_key     /<path>/privkey.pem;
ssl_trusted_certificate /<path>/fullchain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;ssl_dhparam /etc/nginx/dhparam.pem;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ‘ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA’;
ssl_prefer_server_ciphers on;ssl_stapling on;
ssl_stapling_verify on;
}
5、最後重開 nginx 就可以完成。
在WORDPRESS的部份
接下來我們要來介紹如何把wordpress 轉換成 https協定
首先我們必須備份資料庫,再來可以進入 phpmyadmin 來執行sql語法
先把雙引號的 http 取代
UPDATE wp_posts
SET post_content = ( Replace (post_content, ‘src=”//’, ‘src=”//’) )
WHERE Instr(post_content, ‘jpeg’) > 0
OR Instr(post_content, ‘jpg’) > 0
OR Instr(post_content, ‘gif’) > 0
OR Instr(post_content, ‘png’) > 0;
再把 單引號的 http 取代 
UPDATE wp_posts
SET post_content = ( Replace (post_content, “src=’//”, “src=’//”) )
WHERE Instr(post_content, ‘jpeg’) > 0
OR Instr(post_content, ‘jpg’) > 0
OR Instr(post_content, ‘gif’) > 0
OR Instr(post_content, ‘png’) > 0;
最後取代iframe 的格式
UPDATE wp_postmeta
SET meta_value=(REPLACE (meta_value, ‘iframe src=”//’,’iframe src=”//’));
建議在所有動作前先安裝我們開發的插件:http://bit.ly/1TdPJdq 
PS、如果有任何問題(bug),可以寫在聯絡表單,讓我們知道喔~

專精於開發網站系統。自行設計與維護的PHP Framework,曾經歷過許多大中小型的專案。並結合JAVA,設計需要大量運算功能的系統。

上一篇

下一篇

Submit a Comment

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

WordPress教學 申請免費 ssl 憑證並架設在wordpress