手動管理雲端服務器的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。
說明如需進一步排查,請參考:根據瀏覽器錯誤提示解決認證部署問題 和 SSL認證部署故障自助排查指南。
-
-
認證類型及狀態:RSA演算法的單網域名稱SSL認證,且狀態必須為已簽發。
伺服器許可權:需要使用
root賬戶或一個具有sudo許可權的賬戶。網域名稱解析:網域名稱已配置解析記錄並解析至伺服器的公網 IP。
步驟一:確認ECS雲助手狀態正常
需確保ECS已正確安裝雲助手(cloudAssistant),否則無法在控制台實現一鍵部署SSL認證。
-
訪問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認證。
-
在基礎配置引導頁,自訂任務名稱,單擊下一步。
-
在選擇認證引導頁,選擇證書類型以及關聯認證,單擊下一步。
每個部署任務僅支援選擇一張認證進行部署,如需部署多個認證,請建立多個部署任務。
-
在選擇資源引導頁,選擇全部類型為一鍵部署,定位並選擇目標ECS執行個體,單擊下一步。
-
系統會自動識別並拉取當前阿里雲帳號下所有合格ECS執行個體。如未顯示資源,請在左上方資源總數地區單擊同步雲產品資源。資源同步時間取決於您的當前雲產品的資源數,請您耐心等待。
-
若列表中的執行個體資源較多,可通過全部類型下拉式清單,選擇一鍵部署快速篩選支援的執行個體。
-
-
在一鍵部署頁簽,確認是否已滿足認證部署環境,如確認已滿足,請勾選確認以上步驟已經完成,並單擊繼續部署。
-
在提示對話方塊,單擊確定。
警告重啟Web應用伺服器會對業務造成影響,建議您在業務低峰期進行部署。
如需手動重啟Nginx,可參考如下命令:
systemctl restart nginx.service -
重啟Nginx後可通過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的認證檔案配置路徑,僅供參考:
# Settings for a TLS enabled server. # # server { # listen 443 ssl http2; # listen [::]:443 ssl http2; # server_name example.com; # root /usr/share/nginx/html; # ssl_certificate "/etc/pki/nginx/example.com.pem"; ssl_certificate_key "/etc/pki/nginx/example.com.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers PROFILE=SYSTEM; # ssl_prefer_server_ciphers on; # # # 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 { # } # }配置項
描述
配置樣本(僅供參考,請以實際部署路徑為準)
憑證路徑
認證檔案存放在雲端服務器中的絕對路徑。
-
Linux樣本:/ssl/cert.pem
-
Windows樣本:c:\ssl
-
-