在WordPress網站上安裝SSL證書,既是順應網際網路發展之要求,也是網站資訊加密之所需。
網站擁有SSL證書將啟用HTTPS,這可確保不會以純文字形式傳遞任何資訊。我們建議所有站點都使用HTTPS,因為它具有除安全性之外的許多其他好處,如SEO、信任、避免瀏覽器警告等。
如何安裝SSL證書
對於WordPress網站安裝SSL(TLS)證書,小編僅針對最為常見的三種安裝方式進行講解。
選項1 –寶塔安裝免費SSL證書
如果您的VPS伺服器安裝部署了寶塔控制面板,那安裝免費SSL證書是一件非常簡單的事情。
第1步
登入到寶塔控制面板後臺,然後進入“網站”管理列表,找到你需要安裝SSL證書的網站,點選操作“設定”。
在寶塔控制面板中選擇一個站點
第2步
使用寶塔面板安裝SSL證書,主要推薦兩種方式:寶塔SSL(1年免費TrustAsia DV SSL CA證書,期滿可續訂)或者Let’s Encrypt免費證書(3個月免費,可續訂)。
(1)Let’s Encrypt證書安裝
在網站設定彈窗視窗,點選左側選單“SSL”,然後切換至Let’s Encrypt標籤項,選擇驗證方式為“檔案驗證”及勾選你需要安裝SSL證書的“域名”,最後點選“申請”。
申請後,稍等片刻,系統將會自動為您建立SSL證書並完成部署。
注:
- 申請之前,請確保域名已解析,如未解析會導致稽覈失敗
- Let’s Encrypt免費證書,有效期3個月,支援多域名。預設會自動續簽
- 若您的站點使用了CDN或301重定向會導致續簽失敗
- 在未指定SSL預設站點時,未開啟SSL的站點使用HTTPS會直接訪問到已開啟SSL的站點
- 如開啟後無法使用HTTPS訪問,請檢查安全組是否正確放行443埠
(2)寶塔SSL證書安裝
如果你嫌上面的Let’s Encrypt免費證書有效期過短(實際上可以續訂),那也可以申請寶塔的SSL正式(該證書實際上是TrustAsia DV SSL CA – G5證書)。
首先你必須完成寶塔賬號實名認證,否則無法由寶塔提供的1年免費的TrustAsia DV SSL CA – G5證書。
注:寶塔實名認證,可以是個人或者企業實名認證,其中個人實名認證務必保證手機號碼、姓名和身份證三個資訊準確,且手機號碼不能為電訊號碼、攜號轉網號碼(官方說的)。
同在網站設定彈窗視窗,點選左側選單“SSL”,然後切換至寶塔SSL標籤項,選擇你需要申請寶塔SSL的域名,點選“申請”。
成功申請後,點選“部署”操作即可。(部署完成,同樣會跳轉至Let’s Encrypt標籤頁,這有點不太合理的互動)。
注:TrustAsia DV SSL CA – G5證書1年有效期結束後不能夠續簽,需重新申請。
第3步
完成寶塔控制面板的SSL申請及部署後,建議啟用強制HTTPS,以保證所有域名訪問通過https。
選項2 –手動部署安裝免費SSL證書
第一步 –申請免費的SSL證書
你可以通過Free SSL申請註冊免費SSL證書。首先你得註冊一個Free SSL的賬號,然後登入Free SSL網站。在首頁,輸入你要申請免費SSL證書的域名,點選Create certificate:
在下一個步驟,無需理會任何選項,直接點“Next Step”
然後,你可以選擇90天或者1年的SSL證書,注意,這裡千萬不要選擇第二個選項“1-Yeaar Certificate”,應該選擇第一個“90-Day Certificate”。
選擇生成證書資訊的方式,根據自己的實際情況選擇,建議選擇第三個“Fill in the information”:
- EmailAddress-電子郵件地址
- Organization-組織
- Department-部門
- City-城市/地區
- State-省份
- Country-國家
點選提交,瀏覽器將會下載自動生成一個私鑰檔案private key,將其儲存到瀏覽器任意位置(後面最終步驟也會在下載的壓縮包包含此檔案)。
然後,選擇第一個“Free”套餐(注:其他套餐都是付費套餐),點選“Next”,進入下一個步驟。
在下個頁面,Free SSL還需要對域名進行驗證,可以使用郵箱認證、DNS認證和上傳檔案認證,這裡選擇最為便捷的檔案上傳認證作為演示。
選擇“HTTP File upload”,點選“Next”
根據提示的資訊建立一個txt文字,其中Auth value對應的值作為txt文字的內容,Auth path對應的值作為txt檔名,最後將建立好的txt檔案上傳至伺服器網站根目錄下的.well-known/pki-validation
然後點選“Verify Domain”,可能需要一小會的時間。
注:驗證域名的時候,如失敗,檢查下Auth Path的URL是否能夠正常訪問。必須支援http訪問才可以成功驗證,如果啟用了強制https,應臨時取消。
驗證成功後,點選Certificate列表對應域名右側的操作項“Operation”下的“Download”,將會下載一個zip壓縮包(包括一個key檔案合一個pem檔案)。
第二步 –部署SSL證書
(1)寶塔面板部署Free SSL證書
如果你安裝的是寶塔面板,則部署剛才在Free SSL申請的免費證書是一件非常簡單的事情。
登入你的網站伺服器的寶塔控制面板後臺,點選(1)“網站”選單,在網站列表中找到需要配置SSL的域名,點選(2)“設定”操作,然後在彈出視窗中(3)選擇“其他證書”選項卡。
然後將前面下載的壓縮包檔案解壓得到兩個檔案:.key和.pem。使用記事本開啟,將.key的文字內容複製貼上到(4)key金鑰,及將.pem的文字內容複製貼上到(5)PEM格式證書,最後點選“儲存”即可為網站配置SSL證書。
(2)自主部署Free SSL證書
如果伺服器安裝的是Nginx,則參考以下步驟進行SSL證書部署。
找到網站的Nginx的網站配置檔案,可能存放在/usr/local/nginx/conf/vhost
這樣的目錄下的域名.conf
,不同伺服器可能不盡相同。在網站的Nginx配置檔案新增下列註釋的行(相關資訊替換成自己網站的):
server { #在80埠監聽行下方增加443埠監聽 listen 443 ssl http2; #如果需要http跳轉https,在域名指向目錄下方增加下面規則,注意將域名更換為自己的域名 if ($http_host !~ "^bt\.wbolt\.com$") { rewrite ^(.*) https://bt.wbolt.com$1 permanent; } #SSL-START SSL相關配置,請勿刪除或修改下一行帶註釋的404規則 #error_page 404/404.html; #填寫.pem證書的存放路徑,注意將證書儲存路徑改為自己伺服器的路徑 ssl_certificate /usr/local/nginx/conf/ssl/bt.wbolt.com/bt.wbolt.com.pem; #填寫私鑰的存放路徑,注意將證書儲存路徑改為自己伺服器的路徑 ssl_certificate_key /usr/local/nginx/conf/ssl/bt.wbolt.com/bt.wbolt.com.key; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; }
如果伺服器安裝的是Apache,則參照以下步驟進行SSL證書部署。
找到網站的Apache的網站配置檔案,可能存放在/usr/local/apache2.4/conf/httpd.conf
,不同伺服器可能不盡相同。在網站的Apache配置檔案新增下列行(相關資訊需替換自己的):
<VirtualHost *:443> #網站路徑、域名地址及Log路徑均要替換成自己的 ServerAdmin webmaster@example.com DocumentRoot "/www/wwwroot/bt.wbolt.com/" ServerName SSL.bt.wbolt.com ServerAlias bt.wbolt.com #errorDocument 404 /404.html ErrorLog "/www/wwwlogs/bt.wbolt.com-error_log" CustomLog "/www/wwwlogs/bt.wbolt.com-access_log" combined #SSL 以下是配置SSL證書的資訊,切記將證書檔案路徑及檔案換成自己的 SSLEngine On SSLCertificateFile /usr/local/apache/conf/ssl/bt.wbolt.com/bt.wbolt.com.pem SSLCertificateKeyFile /usr/local/apache/conf/ssl/bt.wbolt.com/bt.wbolt.com.key SSLCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5 SSLProtocol All -SSLv2 -SSLv3 -TLSv1 SSLHonorCipherOrder On #PHP <FilesMatch \.php$> SetHandler "proxy:unix:/tmp/php-cgi-56.sock|fcgi://localhost" </FilesMatch> #DENY FILES <Files ~ (\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)$> Order allow,deny Deny from all </Files> #PATH 網站路徑需替換成自己網站的路徑 <Directory "/www/wwwroot/bt.wbolt.com/"> SetOutputFilter DEFLATE Options FollowSymLinks AllowOverride All Require all granted DirectoryIndex index.php index.html index.htm default.php default.html default.htm </Directory> </VirtualHost>
選項3 –使用Cloudflare或Sucuri安裝SSL證書
Cloudflare和Sucuri是所謂的反向代理服務。您可以將它們視為中間人。您將DNS指向他們,然後他們將您的請求路由到網站伺服器。因此,需要採取一些其他步驟來確保正確安裝SSL證書。
使用Cloudflare
Cloudflare允許通過HTTPS載入網站的兩種不同方式:Flexible或者Full (Full strict)。
- Flexible-允許Cloudflare與網站伺服器之間通過HTTP(未加密)連線,並且不需要SSL證書。
- Full需要Cloudflare和網站伺服器之間通過HTTPS(加密)連線。
第1步:在Cloudflare中,切換至“Crypto”選項卡,然後關閉SSL(也建議將Cloudflare設定為development mode(開發模式),直到網站伺服器的SSL準備就緒為止。您可以通過overview面板上的快速操作來執行此操作。)
在Cloudflare中關閉SSL
第2步:通過前面的教學在網站伺服器的寶塔安裝免費SSL證書或手動部署安裝免費SSL證書。
第3步:一旦在網站伺服器上成功安裝了SSL證書,請將Cloudflare的加密級別設定為Full或Full(嚴格),以便從網站伺服器到客戶端瀏覽器的連線一直被加密。
將Cloudflare的SSL模式設定為“Full”。
第4步:然後清除Cloudflare快取。而且,如果您將網站置於開發模式,請確保將其設定為活動狀態。
清除Cloudflare快取
使用Sucuri
您必須首先聯絡他們的客戶,並讓他們啟用“forward certificate validation.”設定。這允許HTTPS設定成功完成。然後,您可以通過上述教學在網站伺服器的寶塔安裝免費SSL證書或手動部署安裝免費SSL證書。
檢查&續訂SSL證書
(1)檢查SSL證書
安裝SSL證書後,建議您執行SSL檢查以驗證所有設定是否正確。
(2)續訂SSL證書
不同的SSL證書,其續訂方式不盡相同。
Let’s Encrypt免費SSL證書續訂
通過寶塔控制面板申請的免費SSL證書(Let’s Encrypt),需要你在寶塔控制面板手動執行續訂操作。點選“網站”,選擇你需要續訂SSL證書的網站域名,點選“設定”操作。
在彈出視窗點選“SSL”選單,切換至“Let’s Encrypt”選項卡,點選“續簽按鈕。”
寶塔SSL免費證書續訂
如果你是通過寶塔控制面申請的一年免費SSL證書,即TrustAsia DV SSL CA – G5證書。這個證書是無法續訂的,必須在證書過期後重新申請。
Free SSL免費證書續訂
如果申請的是Free SSL免費證書,那到期後,也是可以登陸freessl網站進行續訂的。
注:如果您的站點使用了諸如Sucuri之類的反向代理後面,則必須與他們的客戶支援部門聯絡,並讓他們啟用“forward certificate validation.”設定,以允許HTTPS更新成功完成。
強制HTTPS
寶塔控制面板強制HTTPS
安裝SSL證書後,您可以在寶塔控制面板中選擇“強制HTTPS”。此功能可以試想將所有HTTP請求轉為HTTPS。
在寶塔控制面板開啟強制HTTPS
手動配置強制HTTPS
如果你的網站伺服器為Apache伺服器,需要在網站的Apache配置檔案新增下列行
#HTTP_TO_HTTPS_START HTTP請求強制跳轉HTTPS <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule (.*) https://%{SERVER_NAME}$1 [L,R=301] </IfModule> #HTTP_TO_HTTPS_END
如果你的網站伺服器為Nginx伺服器,需要在網站的Nginx配置檔案新增下列行
server { #如果需要http跳轉https,在域名指向目錄下方增加下面規則,注意將域名更換為自己的域名 if ($http_host !~ "^bt\.wbolt\.com$") { rewrite ^(.*) https://bt.wbolt.com$1 permanent; } }
其他注意事項
網站配置https,還需要注意的一些事項:
1.混合內容問題
混合內容問題,即在同一頁面地址,同時使用了http和https兩種協議請求資源。解決辦法如下:
務必在WordPress儀表盤-設定,將WordPress地址和站點地址的URL改為https協議的URL地址,如下圖所示:
然後確保WordPress主題設定裡面的一些本域的URL地址更換成https協議的URL地址。
否則可能會造成跨域問題,啟用了https也會在瀏覽器提示不安全。
完成上述操作,還是會提示跨域問題,可以通過檢視原始碼,找到非https協議的URL連結,再有針對性地去解決。
2.圖片資源未能轉為https協議連結問題
理論上,當你將WordPress地址和站點地址變更為https協議的URL地址後,這個問題會解決。
但也有可能存在特殊的情況。如果還是存在這樣的問題,你可以嘗試資料庫批量替換命令來修復這一問題。
第1步:進入網站對應的phpMyAdmin;
第2步:在左側資料庫表選擇網站對應的資料庫名稱;
第3步:點選頂部導航切換到“SQL”標籤;
第4步:在執行SQL查詢框輸入下列命令列;
UPDATE wp_posts SET post_content = replace(post_content, 'http://你的域名','https://你的域名');
第5步:最後點選“執行”即可將文章內容http協議的本站URL替換為https協議。
注:運算元據庫前務必先備份資料庫。以防操作失誤,可有備份供恢復。
評論留言