手動管理雲端服務器的SSL認證流程複雜、易出錯,且續期時需重複操作。為解決此問題,數位憑證管理服務提供了自動化部署功能,可將認證一鍵部署至指定的ECS可信執行個體,或將新認證自動更新至已配置認證的ECS及Simple Application Server,以提升部署效率並降低配置風險。
部署方案選型
請根據您的伺服器類型和部署情境,選擇合適的方案。
特性 | 方法一:一鍵部署(適用於首次部署) | 方法二:手動部署(適用於更新認證) |
核心機制 | 全自動化。私密金鑰不出執行個體,通過PKCS#11介面與硬體可信模組通訊,安全性高。 | 半自動化。將認證檔案上傳至伺服器指定路徑,覆蓋舊檔案。 |
適用伺服器 | 僅支援部分Elastic Compute Service可信執行個體(第七/八代x86架構),不支援Simple Application Server。 | 支援所有ECS執行個體和Simple Application Server。 |
適用作業系統 | Alibaba Cloud Linux 3.x、Ubuntu 22.04 UEFI鏡像。 | 所有主流Linux和Windows Server發行版。 |
適用Web伺服器 | 僅支援通過 | 支援Nginx、Apache、Tomcat等所有Web伺服器。 |
SSL認證要求 | RSA演算法的單網域名稱SSL認證。 | 所有類型的SSL認證。 |
適用情境 | 在合格ECS可信執行個體上首次部署認證,以實現後續全自動續期。 | 更新Elastic Compute Service或Simple Application Server中已部署的認證。 |
若上述方案均不滿足需求,請參考SSL 憑證部署方案選型選擇合適的部署方案。
一鍵部署(首次部署至ECS可信執行個體)
此方案通過與ECS可信執行個體的安全模組整合,實現認證和私密金鑰的全自動化、高安全部署。若購買的為多年期認證,後續認證續簽後,系統將自動完成更新。
適用範圍
執行個體類型與規格:基於x86架構的第七代和第八代ECS可信執行個體(詳情可參見建立可信執行個體)。不支援Simple Application Server。
作業系統:Alibaba Cloud Linux 3.x、Ubuntu 22.04 UEFI鏡像。
Web伺服器:通過
yum或apt源安裝的特定版本Nginx。Alibaba Cloud Linux3.x鏡像:通過yum安裝的Nginx,版本為 1.18.0-2.1.al8 至 1.20.1-1.0.5.al8(不含)。
Ubuntu22.04 UEFI鏡像:通過apt安裝的Nginx。
認證類型及狀態:RSA演算法的單網域名稱SSL認證,且狀態必須為已簽發。
伺服器許可權:需要使用
root賬戶或一個具有sudo許可權的賬戶。網域名稱解析:網域名稱已配置解析記錄並解析至伺服器的公網 IP。
步驟一:確認ECS雲助手狀態正常
需確保ECS已正確安裝雲助手(cloudAssistant),否則無法在控制台實現一鍵部署SSL認證。
訪問ECS控制台-雲助手。
選擇目標資源所在的資源群組和地區。
在ECS執行個體頁簽下,定位至目標ECS伺服器,在雲助手狀態列查看狀態。
說明若未安裝或雲助手狀態異常請參見查看雲助手狀態及異常狀態處理進行處理。
步驟二:在ECS中配置Nginx Web應用伺服器
首次部署需要修改Nginx設定檔,使其能夠通過PKCS#11介面調用可信模組中的私密金鑰。後續更新則無需此操作。
Alibaba Cloud Linux 3.x鏡像
本文以Nginx 1.20.1版本為例進行介紹。/etc/nginx/為通過 yum 安裝Nginx的預設安裝目錄。若修改過該目錄,請根據實際配置調整。
確認 Nginx 版本。
當前僅支援 Nginx的1.18.0-2.1.al8 ~ 1.20.1-1.0.5.al8(不包含此版本)。
重要如果Elastic Compute Service已安裝Nginx,需要您在使用一鍵部署功能前檢查Nginx的安裝版本是否支援,否則需要您將Nginx降低至支援的版本,或重新安裝。
開啟
/etc/nginx/nginx.conf設定檔,並在pid /run/nginx.pid;後添加ssl_engine pkcs11;,以指定使用PKCS#11加密庫。添加位置及完整樣本:user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # 指定使用PKCS#11加密庫 ssl_engine pkcs11;開啟
/etc/nginx/nginx.conf設定檔,取消Settings for a TLS enabled server注釋,並添加include "/etc/acm/ssl/nginx-acm.conf";用於引用SSL密鑰配置。新增內容:
include "/etc/acm/ssl/nginx-acm.conf";添加位置及完整樣本:
server { listen 443 ssl http2; listen [::]:443 ssl http2; # 指定主機名稱或公用NAME(CN) server_name example.com; root /usr/share/nginx/html; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_prefer_server_ciphers on; # 引用SSL密鑰配置 include "/etc/acm/ssl/nginx-acm.conf"; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
開啟
/usr/lib/systemd/system/nginx.service檔案,添加P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock和OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf用於配置與SSL密鑰服務的通訊。新增內容:
Environment="P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock" Environment="OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf"添加位置及完整樣本:
[Unit] Description=A high performance web server and a reverse proxy server Documentation=man:nginx(8) After=network.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;' ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;' ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid TimeoutStopSec=5 KillMode=mixed # 配置與SSL密鑰服務的通訊 Environment="P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock" Environment="OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf" [Install] WantedBy=multi-user.target說明如果您不清楚Nginx的systemd服務組態檔路徑,可執行
sudo find / -name "nginx.service"尋找。
執行以下命令,重載Nginx systemd服務配置。
systemctl daemon-reload
Ubuntu 22.04鏡像
本樣本是以Nginx 1.18.0版本為例介紹。/etc/nginx/為使用apt安裝Nginx的預設安裝目錄。若手動修改過該目錄或使用其他方式安裝的Nginx,請根據實際配置調整。
開啟
/etc/nginx/nginx.conf設定檔,並在pid /run/nginx.pid;後添加ssl_engine pkcs11;用於指定使用SSL/TLS加密庫。添加位置及完整樣本:user www-data; worker_processes auto; pid /run/nginx.pid; # 指定使用PKCS#11加密庫 ssl_engine pkcs11; include /etc/nginx/modules-enabled/*.conf;開啟
/etc/nginx/sites-enabled/default檔案,在default檔案中建立server塊並添加include "/etc/acm/ssl/nginx-acm.conf";。新增內容:
include "/etc/acm/ssl/nginx-acm.conf";添加位置及完整樣本:
server { listen 443 ssl; # 指定主機名稱或公用NAME(CN) server_name example.com; root /var/www/html; index index.html index.htm; access_log /var/log/nginx/access_6equj5.log; error_log /var/log/nginx/error_6equj5.log; ssl on; # 引用SSL密鑰配置 include "/etc/acm/ssl/nginx-acm.conf"; location / { try_files $uri $uri/ =404; } }
開啟
/usr/lib/systemd/system/nginx.service檔案,添加P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock和OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf用於配置與SSL密鑰服務的通訊。說明如果您不清楚Nginx的systemd服務組態檔路徑,可執行
sudo find / -name "nginx.service"尋找。新增內容:
Environment="P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock" Environment="OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf"添加位置及完整樣本:
[Unit] Description=A high performance web server and a reverse proxy server Documentation=man:nginx(8) After=network.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;' ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;' ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid TimeoutStopSec=5 KillMode=mixed # 配置與SSL密鑰服務的通訊 Environment="P11_KIT_SERVER_ADDRESS=unix:path=/etc/acm/ssl/acm-p11-kit.sock" Environment="OPENSSL_CONF=/etc/acm/ssl/openssl-acm.cnf" [Install] WantedBy=multi-user.target
執行以下命令,重載Nginx systemd服務配置。
systemctl daemon-reload
步驟三:通過認證控制台部署認證
登入數位憑證管理服務控制台。
在左側導覽列,選擇。
在雲端服務器部署頁面,單擊創建任務,按照以下步驟部署SSL認證。
在基礎配置引導頁,自訂任務名稱,單擊下一步。
在選擇認證引導頁,選擇認證類型以及關聯雲端服務器的SSL認證,單擊下一步。
每個部署任務僅支援選擇一張認證進行部署,如需部署多個認證,請建立多個部署任務。
在選擇資源引導頁,選擇支援一鍵部署的ECS執行個體,單擊下一步。

系統會自動識別並拉取當前阿里雲帳號下所有合格ECS執行個體。如未顯示資源,請在左上方資源總數地區單擊同步雲產品資源。資源同步時間取決於您的當前雲產品的資源數,請您耐心等待。
若列表中的執行個體資源較多,可通過全部類型下拉式清單,選擇一鍵部署/手動部署快速篩選支援的執行個體。
在一鍵部署頁簽,確認是否已滿足認證部署環境,如確認已滿足,請勾選確認以上步驟已經完成,並單擊繼續部署。
在提示對話方塊,單擊確定。
警告重啟Web應用伺服器會對業務造成影響,建議您在業務低峰期進行部署。

手動重啟Nginx命令參考:
systemctl restart nginx.service重啟後可通過curl命令測試Nginx SSL的連結情況。命令格式為
curl -v https://<認證綁定的網域名稱>。
步驟四:確認部署任務狀態
在雲端服務器部署頁面,找到您建立的任務,如果任務狀態為部署成功,表示已成功將認證上傳至雲端服務器中。

步驟五:驗證SSL認證是否生效
部署任務執行成功不代表認證生效,您仍需通過訪問網域名稱查看認證的生效情況。
請通過 HTTPS 訪問您已綁定認證的網域名稱(如
https://example.com,example.com需替換為實際網域名稱)。若瀏覽器地址欄顯示安全鎖表徵圖,說明認證已成功部署。如訪問異常或未顯示安全鎖,請先清除瀏覽器緩衝或使用無痕(隱私)模式重試。

Chrome 瀏覽器自 117 版本起,地址欄中的
已被新的
替代,需單擊該表徵圖後查看安全鎖資訊。
手動部署(更新已有認證)
此方案用於將新認證更新到已配置過認證的雲端服務器(ECS或Simple Application Server),通過覆蓋舊認證檔案來簡化續期和更換流程。不適用於首次部署。
適用範圍
雲端服務器類型:僅適用於阿里雲雲端服務器(Simple Application Server和Elastic Compute Service)。
Web伺服器:僅支援Nginx/Apache等直接引用PEM、CRT格式認證的Web環境,不支援IIS。
伺服器許可權:需要使用
root賬戶或一個具有sudo許可權的賬戶。
步驟一:部署SSL認證
登入數位憑證管理服務控制台。
在左側導覽列,選擇。
在雲伺服器部署頁面,單擊創建任務。
在基礎配置引導頁,填寫任務名稱後,單擊下一步。
在選擇認證引導頁,選擇證書類型,勾選關聯認證後,單擊下一步。
通過私人CA服務簽發的認證會同步至上傳證書頁簽。
在選擇資源引導頁,選擇雲端服務器類型,勾選目標執行個體後,單擊下一步。首次進入該頁面,系統會自動識別並拉取當前阿里雲帳號下所有合格雲端服務器執行個體(即雲端服務器中部署了Web應用)。
說明如未顯示資源,請單擊資源總數地區的同步雲產品資源手動同步,同步時間和雲產品的資源數相關,請耐心等待。

在部署配置引導頁,參考下表進行配置,單擊確定。
重要憑證路徑和私密金鑰路徑必須和Web應用中配置的憑證路徑一致,否則認證不會生效。
下圖為雲端服務器中Nginx的認證檔案配置路徑,僅供參考:

配置項
描述
配置樣本(僅供參考,請以實際部署路徑為準)
憑證路徑
認證檔案存放在雲端服務器中的絕對路徑。
Linux樣本:/ssl/cert.pem
Windows樣本:c:\ssl\cert.pem
私密金鑰路徑
認證私密金鑰檔案存放在雲端服務器中的絕對路徑。
Linux樣本:/ssl/cert.key
Windows樣本:c:\ssl\cert.key
憑證鏈結路徑
憑證鏈結檔案存放在雲端服務器中的絕對路徑。
說明Web應用中已配置憑證鏈結檔案時,請對照填寫該路徑。
Linux樣本:/ssl/cert.cer
Windows樣本:c:\ssl\cert.cer
重啟命令
如果配置了重啟命令,在部署認證後,將執行此命令重啟雲端服務器中的Web應用或重新載入Web應用設定檔,以使認證生效。
重要如出現Web應用重啟失敗的情況,請前往對應的雲端服務器進行操作。
重新載入Nginx設定檔的命令為
sudo nginx -s reload。重啟Apache服務的命令為
sudo systemctl restart httpd。
在彈出的對話方塊單擊確定。
如果未配置重啟命令,則提示如下。單擊確定後,請登入對應雲端服務器手動重啟Web應用服務,以確保認證立即生效。

如果配置了重啟命令,則提示如下。請確認風險後單擊確定,部署任務結束後會執行重啟命令重啟伺服器,以確保認證立即生效。

步驟二:確認部署任務狀態
在雲伺服器部署頁面,找到您建立的任務,任務狀態為部署成功,即表示已成功將認證更新至雲端服務器中。

步驟三:驗證SSL認證是否生效
請通過 HTTPS 訪問您已綁定認證的網域名稱(如
https://example.com,example.com需替換為實際網域名稱)。若瀏覽器地址欄顯示安全鎖表徵圖,說明認證已成功部署。如訪問異常或未顯示安全鎖,請先清除瀏覽器緩衝或使用無痕(隱私)模式重試。

Chrome 瀏覽器自 117 版本起,地址欄中的
已被新的
替代,需單擊該表徵圖後查看安全鎖資訊。
如仍有問題,請參考常見問題進行排查。
配額與限制
部署費用:
部署正式認證:免費,不消耗部署次數。
部署您自行上傳的認證:消耗部署次數。部署次數需購買部署次數包,費用為30元/次。部署失敗時,將返還相應的部署次數。
配額限制:
每個部署任務僅支援將一張認證部署至一個雲端服務器執行個體。如需為多個執行個體部署,請建立多個任務。
應用於生產環境
服務中斷風險:兩種部署方法最終都可能需要重啟Web服務(如Nginx、Apache),這將導致服務在重啟期間短暫中斷。強烈建議您在業務低峰期執行部署操作。
平滑重載:對於支援平滑重載(reload)的Web伺服器(如Nginx),在“方法二”的重啟命令中,建議使用
nginx -s reload或systemctl reload nginx代替restart,以減少對現有串連的影響。監控與警示:建議在認證部署完成後,為網域名稱開啟網域名稱監控功能。阿里雲將自動檢測認證有效期間,並在認證到期前發送提醒,協助您及時續期,避免服務中斷。具體操作請參見購買並開啟公網網域名稱監控。
常見問題
安裝或更新認證後,認證未生效或 HTTPS 無法訪問
常見原因如下:
伺服器安全性群組或防火牆未開放 443 連接埠。
認證的綁定網域名稱未包含當前訪問的網域名稱。
部署任務的任務狀態異常,請前往任務詳情頁,單擊查看失敗原因後,根據提示更新相關配置後重試。
如需進一步排查,請參考:根據瀏覽器錯誤提示解決認證部署問題 和 SSL認證部署故障自助排查指南。
部署報錯“the cloud Assistant not install or run”怎麼辦?

原因:未安裝ECS雲助手或 ECS雲助手狀態異常。
解決方案一:
訪問ECS控制台-雲助手。
定位至目標伺服器,查看雲助手狀態。
若未安裝可單擊一鍵安裝自動化安裝。
若狀態異常請參見雲助手異常狀態處理尋找解決方案。
ECS雲助手狀態正常後,重新在數位憑證控制台建立雲端服務器部署任務。
解決方案二:
參考在Nginx或Tengine伺服器安裝 SSL認證(Linux),使用手動安裝部署的方式為ECS伺服器安裝認證。