1. 程式人生 > >Windows伺服器上完成Let’s Encrypt免費SSL證書的自動化更新部署(apache)

Windows伺服器上完成Let’s Encrypt免費SSL證書的自動化更新部署(apache)

Let’s Encrypt是一家致力於推動網站SSL加密普及的公益組織,受到眾多廠商的支援。其證書有效期為3個月,但是由於免費加上可以使用API完成自動化更新部署,受到眾多站長青睞。


證書申請流程:

下載Windows安裝包到網站所在伺服器並解壓,開啟letsencrypt.exe。首次開啟會要求填寫email郵箱,在證書將過期時郵箱會收到通知。填寫郵箱回車,等待數秒登記註冊好郵箱,然後輸入y同意協議,正式開始申請證書

第一步填寫證書生成方式,填寫 m 並回車


接著填寫要申請的域名和網站本地根目錄(該域名必須對應本地網站根目錄)


等待數秒,軟體會在你的網站根目錄下建立一個.well-known資料夾放入驗證檔案,然後請求Let’s Encrypt伺服器訪問你的域名驗證此檔案是否存在。驗證完畢後會跳出介面詢問是否建立Windows計劃任務,在證書到期前自動續簽。按y後輸入管理員賬號和密碼即可


開啟目錄C:\Users\Administrator\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\

這裡面就是所有的證書公鑰、私鑰、證書鏈等檔案,然後我們就可以進行apache的部署。

apache上SSL證書的部署:

開啟 apache 安裝目錄下 conf 目錄中的 httpd.conf 檔案,找到以下內容並去掉前面的“#”:

#LoadModule ssl_module modules/mod_ssl.so (如果找不到請確認是否編譯過 openssl 外掛)
#Include conf/extra/httpd-ssl.conf



 開啟 apache 安裝目錄下 conf/extra/httpd-ssl.conf 檔案 (也可能是conf.d/ssl.conf,與作業系統及安裝方式有關), 在配置檔案中查詢並配置以下語句:

# 新增 SSL 協議支援協議,去掉不安全的協議
SSLProtocol all -SSLv2 -SSLv3

SSLProxyProtocol all -SSLv2 -SSLv3

# 修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM

SSLProxyCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM

#開啟SSLHonorCipherOrder
SSLHonorCipherOrder on

# 證書公鑰配置(www.xxx.com改成自己剛才申請的域名)
SSLCertificateFile "C:/Users/Administrator/AppData/Roaming/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/www.xxx.com-crt.pem"

# 證書私鑰配置(www.xxx.com改成自己剛才申請的域名)
SSLCertificateKeyFile "C:/Users/Administrator/AppData/Roaming/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/www.xxx.com-key.pem"

# 證書鏈配置,如果該屬性開頭有 '#'字元,請刪除掉(www.xxx.com改成自己剛才申請的域名)
SSLCertificateChainFile "C:/Users/Administrator/AppData/Roaming/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/www.xxx.com-chain.pem"

部署完畢,重啟apache,訪問網站前加https即可通過加密方式訪問站點


注意:部分人會出現開啟SSL後apache無法啟動的情況,可能是因為預設的443埠被佔用,可以使用 netstat -ano|findstr "443" 命令查詢到佔用埠的程序PID,在工作管理員中結束它。


也可以替換conf/extra/httpd-ssl.conf中所有443為其它埠號(如442),訪問網站時就輸入https://www.xxx.com:442

conf/extra/httpd-ssl.conf懶人版(新建-複製-替換證書路徑-啟動)

Listen 443
<VirtualHost *:443>
  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
  SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
  SSLCertificateFile "C:/phpStudy/Apache/conf/ssl/2_www.weiduweilan.cn.crt"
  SSLCertificateKeyFile "C:/phpStudy/Apache/conf/ssl/3_www.weiduweilan.cn.key"
  SSLCertificateChainFile "C:/phpStudy/Apache/conf/ssl/1_root_bundle.crt"
  DocumentRoot  "C:\phpStudy\WWW\Zerg\public"
  <Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
  </Directory>
</VirtualHost>