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>