WordPress網站免費SSL證書申請及配置教學

SSL證書申請及配置教學

在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證書的“域名”,最後點選“申請”。

Let's Encrypt證書申請

申請後,稍等片刻,系統將會自動為您建立SSL證書並完成部署。

Let's Encrypt證書部署

注:

  • 申請之前,請確保域名已解析,如未解析會導致稽覈失敗
  • 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的域名,點選“申請”。

TrustAsia DV SSL CA - G5證書申請

成功申請後,點選“部署”操作即可。(部署完成,同樣會跳轉至Let’s Encrypt標籤頁,這有點不太合理的互動)。

TrustAsia DV SSL CA - G5證書部署

注:TrustAsia DV SSL CA – G5證書1年有效期結束後不能夠續簽,需重新申請。

第3步

完成寶塔控制面板的SSL申請及部署後,建議啟用強制HTTPS,以保證所有域名訪問通過https。

寶塔強制HTTPS啟用

選項2 –手動部署安裝免費SSL證書

第一步 –申請免費的SSL證書

你可以通過Free SSL申請註冊免費SSL證書。首先你得註冊一個Free SSL的賬號,然後登入Free SSL網站。在首頁,輸入你要申請免費SSL證書的域名,點選Create certificate

FreeSSL官網

在下一個步驟,無需理會任何選項,直接點“Next Step”

FreeSSL免費證書申請

然後,你可以選擇90天或者1年的SSL證書,注意,這裡千萬不要選擇第二個選項“1-Yeaar Certificate”,應該選擇第一個“90-Day Certificate”

90天免費SSL證書

選擇生成證書資訊的方式,根據自己的實際情況選擇,建議選擇第三個“Fill in the information”:

  • EmailAddress-電子郵件地址
  • Organization-組織
  • Department-部門
  • City-城市/地區
  • State-省份
  • Country-國家

免費SSL證書資訊填寫

點選提交,瀏覽器將會下載自動生成一個私鑰檔案private key,將其儲存到瀏覽器任意位置(後面最終步驟也會在下載的壓縮包包含此檔案)。

然後,選擇第一個“Free”套餐(注:其他套餐都是付費套餐),點選“Next”,進入下一個步驟。

FreeSSL套餐選擇

在下個頁面,Free SSL還需要對域名進行驗證,可以使用郵箱認證、DNS認證和上傳檔案認證,這裡選擇最為便捷的檔案上傳認證作為演示。

選擇“HTTP File upload”,點選“Next”

FreeSSL域名驗證

根據提示的資訊建立一個txt文字,其中Auth value對應的值作為txt文字的內容,Auth path對應的值作為txt檔名,最後將建立好的txt檔案上傳至伺服器網站根目錄下的.well-known/pki-validation

FreeSSL域名驗證-檔案上傳驗證

然後點選“Verify Domain”,可能需要一小會的時間。

注:驗證域名的時候,如失敗,檢查下Auth Path的URL是否能夠正常訪問。必須支援http訪問才可以成功驗證,如果啟用了強制https,應臨時取消。

驗證成功後,點選Certificate列表對應域名右側的操作項“Operation”下的“Download”,將會下載一個zip壓縮包(包括一個key檔案合一個pem檔案)。

FreeSSL證書檔案下載

第二步 –部署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配置檔案新增下列註釋的行(相關資訊替換成自己網站的):

 

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
}
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; }
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配置檔案新增下列行(相關資訊需替換自己的):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<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>
<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>
<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

在Cloudflare中關閉SSL

第2步:通過前面的教學在網站伺服器的寶塔安裝免費SSL證書手動部署安裝免費SSL證書

第3步:一旦在網站伺服器上成功安裝了SSL證書,請將Cloudflare的加密級別設定為Full或Full(嚴格),以便從網站伺服器到客戶端瀏覽器的連線一直被加密。

cloudflare完全SSL加密模式

將Cloudflare的SSL模式設定為“Full”。

第4步:然後清除Cloudflare快取。而且,如果您將網站置於開發模式,請確保將其設定為活動狀態。

清除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免費證書續訂

如果你是通過寶塔控制面申請的一年免費SSL證書,即TrustAsia DV SSL CA – G5證書。這個證書是無法續訂的,必須在證書過期後重新申請。

Free SSL免費證書續訂

如果申請的是Free SSL免費證書,那到期後,也是可以登陸freessl網站進行續訂的。

注:如果您的站點使用了諸如Sucuri之類的反向代理後面,則必須與他們的客戶支援部門聯絡,並讓他們啟用“forward certificate validation.”設定,以允許HTTPS更新成功完成。

強制HTTPS

寶塔控制面板強制HTTPS

安裝SSL證書後,您可以在寶塔控制面板中選擇“強制HTTPS”。此功能可以試想將所有HTTP請求轉為HTTPS。

寶塔啟用強制HTTPS

在寶塔控制面板開啟強制HTTPS

手動配置強制HTTPS

如果你的網站伺服器為Apache伺服器,需要在網站的Apache配置檔案新增下列行

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#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
#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
#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配置檔案新增下列行

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
server {
#如果需要http跳轉https,在域名指向目錄下方增加下面規則,注意將域名更換為自己的域名
if ($http_host !~ "^bt\.wbolt\.com$") {
rewrite ^(.*) https://bt.wbolt.com$1 permanent; }
}
server { #如果需要http跳轉https,在域名指向目錄下方增加下面規則,注意將域名更換為自己的域名 if ($http_host !~ "^bt\.wbolt\.com$") { rewrite ^(.*) https://bt.wbolt.com$1 permanent; } }
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地址及站點地址設定

然後確保WordPress主題設定裡面的一些本域的URL地址更換成https協議的URL地址。

否則可能會造成跨域問題,啟用了https也會在瀏覽器提示不安全。

完成上述操作,還是會提示跨域問題,可以通過檢視原始碼,找到非https協議的URL連結,再有針對性地去解決。

2.圖片資源未能轉為https協議連結問題

理論上,當你將WordPress地址和站點地址變更為https協議的URL地址後,這個問題會解決。

但也有可能存在特殊的情況。如果還是存在這樣的問題,你可以嘗試資料庫批量替換命令來修復這一問題。

第1步:進入網站對應的phpMyAdmin;

第2步:在左側資料庫表選擇網站對應的資料庫名稱;

第3步:點選頂部導航切換到“SQL”標籤;

第4步:在執行SQL查詢框輸入下列命令列;

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
UPDATE wp_posts SET post_content = replace(post_content, 'http://你的域名','https://你的域名');
UPDATE wp_posts SET post_content = replace(post_content, 'http://你的域名','https://你的域名');
UPDATE wp_posts SET post_content = replace(post_content, 'http://你的域名','https://你的域名');

第5步:最後點選“執行”即可將文章內容http協議的本站URL替換為https協議。

注:運算元據庫前務必先備份資料庫。以防操作失誤,可有備份供恢復。

評論留言