阿里云加密服務支持國密算法證書和國密SSL協議,支持通過GVSM或EVSM產生和存儲SSL證書私鑰,提升系統的安全性。您可以使用加密服務和配套接口TASSL實現Nginx SSL卸載。本文介紹如何在阿里云ECS上借助加密服務進行SSL的安全卸載。
支持的密碼機類型
金融數據密碼機(EVSM)、通用服務器密碼機(GVSM)。
本文以EVSM為例簡要介紹,使用GVSM時請參考執行。您可以在加密服務控制臺下載對應密碼機的軟件包,在軟件包中查看詳細的使用指南。
軟件包下載位置截圖:
EVSM:在
路徑下,查看《EVSM支持SSL卸載使用指南v1.xx.pdf》和《EVSM支持SSL卸載使用指南v1.xx(密鑰密文版).pdf》。GVSM:在
路徑下,查看《密碼機支持SSL卸載使用指南v1.xx(索引)(nginx)(GHSM&GVSM).pdf》。
典型部署方案圖
在阿里云ECS上實現SSL卸載的典型部署方案如下圖所示。
前提條件
已創建密碼機實例。
已準備以下資源:
資源類型
資源名稱
規格
說明
云資源
ECS1
64位Windows 10系統
對租用的EVSM進行管理配置。
說明您需要設置ECS1訪問EVSM的管理端口為8013,訪問GVSM的管理端口為8020。
ECS2
64位Linux系統
用于部署用戶的業務系統、TASSL、Nginx。
說明您需要設置ECS2訪問EVSM的服務端口為8018,訪問GVSM的業務端口為8019。
您需要設置ECS2的SSL端口服務。
金融數據密碼機(EVSM)或通用服務器密碼機(GVSM)
EVSM或GVSM
用于完成卸載SSL證書相關的密碼運算。
軟件資源
密碼機實例管理工具
-
用于配置密碼機實例。
請在加密服務控制臺下載對應密碼機的軟件包。
EVSM:在
中獲取。GVSM:在
中獲取。
TASSL引擎
-
支持調用EVSM或GVSM的TASSL引擎文件包,支持國密算法和國外算法。
請在加密服務控制臺下載對應密碼機的軟件包。
EVSM:在
中獲取。GVSM:在
中獲取。
Nginx代理
-
配合使用TASSL引擎的Nginx服務包。
請在加密服務控制臺下載對應密碼機的軟件包。
EVSM:在
中獲取。GVSM:在
中獲取。
步驟一:配置密碼機實例管理工具
如果您的業務需要正式上線,在購買加密服務實例后,您需要使用密碼機實例管理工具配置密碼機客戶端。
密碼機客戶端管理工具只支持在Windows系統運行。
登錄加密服務管理控制臺,在頂部菜單欄,選擇目標地域。
在實例列表頁面,定位到目標密碼機實例,單擊規格列,然后單擊下載密碼機實例管理工具。
解壓獲取密碼機軟件包,選擇以下任一方式安裝密碼機實例管理工具。
在本地終端安裝密碼機客戶端管理工具,然后通過VPN或物理專線使本地終端連接到密碼機實例所屬的VPC網絡。
在ECS實例上安裝密碼機客戶端管理工具,然后通過本地終端遠程登錄ECS實例,在ECS實例上操作密碼機實例管理工具。購買ECS實例的具體操作,請參見自定義購買實例。
初始化密碼機實例。
初始化方式
操作步驟
在加密服務控制臺一鍵初始化
重要使用一鍵初始化,您的密碼機必須是通用密碼機GVSM且您沒有使用UKEY的需求。
在實例列表頁面,單擊目標實例操作列的圖標,然后單擊初始化。
在初始化實例對話框,單擊確定。
初始化預計需要1~5分鐘時間,請耐心等待。初始化完成后,您再次打開初始化實例對話框時,初始化狀態會顯示已初始化,該狀態下請勿重復初始化。
使用密碼機實例管理工具初始化
參考密碼機軟件包中的用戶管理手冊的《設備初始化》章節,完成初始化操作。
步驟二:在ECS2部署TASSL
登錄ECS2實例。具體操作,請參見ECS連接方式概述。
將獲取到的TASSL引擎文件包tassl.tgz上傳至ECS2并解壓,例如解壓到/home/tass目錄。
如果tassl.tgz未解壓到/home/tass目錄,則需要配置兩個環境變量,分別用于查找引擎庫和引擎庫配置文件。例如:
export OPENSSL_ENGINES=/home/other/tassl/lib/engines-1.1/ export TASSL_ENGINE_CFG=/home/other/tassl/cfg/tasshsm_engine.ini
配置TASSL引擎要訪問的EVSM信息。
將/home/tass/tassl/cfg/tasshsm_engine.ini文件中的IP和PORT修改為EVSM的IP地址和主機服務端口號。
步驟三:申請和簽發SSL證書
您可以根據需要生成RSA算法、SM2算法、ECC算法服務器的證書請求文件(也稱CSR或P10文件)并簽發證書。在測試階段建議采用自簽發證書,生產階段建議采用從CA中心簽發或者通過阿里云數字證書管理服務簽發的證書。
阿里云數字證書管理服務簽發證書的具體操作,請參見提交證書申請。
RSA算法服務端證書(單證)申請和簽發
生成證書請求文件。
方式一:通過EVSM的管理工具生成
登錄密碼機實例管理工具,單擊密鑰管理頁簽,然后單擊非對稱密鑰管理。
在非對稱密鑰管理對話框,單擊產生新密鑰。
在產生非對稱密鑰對話框,配置算法標識為RSA、密鑰模長為2048、冪指數為65537,然后單擊產生。
EVSM將產生新的非對稱密鑰并輸出顯示公鑰明文和私鑰密文。
在非對稱密鑰管理對話框,單擊生成RSA請求。
在生成RSA對話框,輸入合法的主題,選擇是否使用內部索引,并輸入密鑰索引,單擊確定。
方式二:通過TASSL配套腳本生成
進入ECS2的/home/tass/tassl/cert/rsa目錄,生成證書請求文件S_RSA_HSM.csr。
[tass@localhost rsa]#./gen_rsa_csr_with_hsm -r S_RSA_HSM.csr 請輸入DN:/C=CN/ST=BJ/L=HaiDian/O=Beijing JNTA Technology LTD./OU=BSRC of TASS/CN=rsa_commoname/ 請輸入密鑰模長[1024 - 2048]:2048 請選擇摘要算法:1)SHA1 2)SHA224 3)SHA256 4)SHA384 5)SHA512 請輸入:3 請輸入加密機存儲私鑰的索引號:15
簽發證書。
如果您在生產階段,建議采用從CA中心簽發或者通過阿里云數字證書管理服務簽發的證書。在測試階段,如果您可以采用通過TASSL配套腳本產生的自簽發證書。自簽發證書的過程如下:
進入ECS2的/home/tass/tassl/cert/rsa目錄。
簽發S_RSA_HSM.crt。
./sign_cert.sh S_RSA_HSM.csr S_RSA_HSM.crt
國密SM2算法的服務端證書(雙證)申請和簽發
生成證書請求文件。
方式一:通過EVSM的管理工具生成
登錄密碼機實例管理工具,單擊密鑰管理頁簽,然后單擊非對稱密鑰管理。
在非對稱密鑰管理對話框,單擊產生新密鑰。
在產生非對稱密鑰對話框,配置算法標識為SM2、密鑰索引號為15,然后單擊產生。
EVSM將產生新的非對稱密鑰并輸出顯示公鑰明文和私鑰密文。
在非對稱密鑰管理對話框,單擊生成ECC請求。
在生成ECC對話框中,選擇算法標識、主題標識,輸入主題、密鑰索引,單擊確定。
方式二:通過TASSL配套腳本生成
進入ECS2的/home/tass/tassl/cert/sm2目錄,生成證書請求文件和加密證書請求文件SS_SM2_HSM.csr。
#產生證書請求文件SS_SM2_HSM.csr [tass@localhost rsa]# ./gen_sm2_csr_with_hsm -r SS_SM2_HSM.csr 請輸入DN:/C=CN/ST=BJ/L=HaiDian/O=Beijing JNTA Technology LTD./OU=BSRC of TASS/CN=sm2_commoname/ 請輸入加密機存儲私鑰的索引號:15 #產生加密證書請求文件SE_SM2_HSM.csr [tass@localhost rsa]# ./gen_sm2_csr_with_hsm -r SE_SM2_HSM.csr 請輸入DN:/C=CN/ST=BJ/L=HaiDian/O=Beijing JNTA Technology LTD./OU=BSRC of TASS/CN=sm2_commoname/ 請輸入加密機存儲私鑰的索引號:16
簽發證書。
如果您在生產階段,建議采用從CA中心簽發或者通過阿里云數字證書管理服務簽發的證書。在測試階段,如果您可以采用通過TASSL配套腳本產生的自簽發證書。自簽發證書的過程如下:
進入ECS2的/home/tass/tassl/cert/sm2目錄。
簽發簽名證書文件SS_SM2_HSM.crt和加密證書文件SE_SM2_HSM.crt。
#簽發簽名證書文件SS_SM2_HSM.cr ./sign_cert_s.sh SS_SM2_HSM.csr SS_SM2_HSM.crt #簽發加密證書文件SE_SM2_HSM.crt ./sign_cert_e.sh SE_SM2_HSM.csr SE_SM2_HSM.crt
ECC算法的服務端證書申請和簽發
生成證書請求文件。
方式一:通過EVSM的管理工具生成
登錄密碼機實例管理工具,單擊密鑰管理頁簽,然后單擊非對稱密鑰管理。
在非對稱密鑰管理對話框,單擊產生新密鑰。
在產生非對稱密鑰對話框,配置算法標識為NID_NISTP256、密鑰索引號為17,然后單擊產生。
EVSM將產生新的非對稱密鑰并輸出顯示公鑰明文和私鑰密文。
在非對稱密鑰管理對話框,選中產生的ECC曲線密鑰,然后單擊生成ECC請求。
在生成ECC對話框中,選擇算法標識、主題標識,輸入主題、密鑰索引,單擊確定。
方式二:通過TASSL配套腳本生成
進入ECS2的/home/tass/tassl/cert/ecc目錄,生成證書請求文件S_ECC_HSM.csr。
[tass@localhost rsa]# ./gen_ecc_csr_with_hsm -r S_ECC_HSM.csr 請輸入DN:/C=CNST=BJ/L=HaiDian/O=Beijing JNTA Technology LTD./OU=BSRC of TASS/CN=ecc_commoname/ 請選擇摘要算法:1)SHA1 2)SHA224 3)SHA256 4)SHA384 5)SHA512 請輸入:3 請輸入加密卡存儲私鑰的索引號(0代表不保存,并且輸出加密私鑰):17
簽發證書。
如果您在生產階段,建議采用從CA中心簽發或者通過阿里云數字證書管理服務簽發的證書。在測試階段,如果您可以采用通過TASSL配套腳本產生的自簽發證書。自簽發證書的過程如下:
進入ECS2的/home/tass/tassl/cert/ecc目錄。
簽發證書文件S_ECC_HSM.crt。
./sign_cert.sh S_ECC_HSM.csr S_ECC_HSM.crt
步驟四:部署Nginx服務
將配合使用TASSL引擎的Nginx服務包nginx-1.21.2_tassl.tgz上傳至ECS2上并解壓,例如解壓到/home/tass目錄。
在/home/tass/nginx-1.21.2_tassl目錄安裝Nginx服務。
./configure --with-http_ssl_module --with-stream --with-stream_ssl_module --with-openssl=/home/tass/tassl --prefix=/home/tass/nginx make make install
配置不同加密算法服務端證書的Nginx服務。
您可以參考下表代碼示例編輯/home/tass/nginx/conf/nginx.conf配置文件的證書部分。
RSA
worker_processes auto; … … # HTTPS server server { listen 8020 ssl; server_name localhost; #use tasshsm engine by key index ssl_certificate /home/tass/tassl/cert/rsa/S_RSA_HSM.crt; #配置RSA證書文件。 ssl_certificate_key engine:tasshsm_rsa:15; #配置存儲RSA私鑰的索引號。 ssl_verify_client off; #for one way https #表示不驗證客戶端。 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } } …
SM2
worker_processes auto; … … # HTTPS server server { listen 8021 ssl; server_name localhost; #use tasshsm engine by key index ssl_certificate /home/tass/tassl/cert/sm2/SS_SM2_HSM.crt; #配置簽名證書文件。 ssl_certificate_key engine:tasshsm_sm2:15; #配置存儲簽名私鑰的索引號。 ssl_enc_certificate /home/tass/tassl/cert/sm2/SE_SM2_HSM.crt; #配置加密證書文件。 ssl_enc_certificate_key engine:tasshsm_sm2:16; #配置存儲加密私鑰的索引號。 ssl_verify_client off; # for one way https #表示不驗證客戶端。 … location / { root html; index index.html index.htm; } } …
ECC
worker_processes auto; … … # HTTPS server server { listen 8022 ssl; server_name localhost; #use tasshsm engine by key index ssl_certificate /home/tass/tassl/cert/ecc/S_ECC_HSM.crt; #配置RSA證書文件。 ssl_certificate_key engine:tasshsm_ecc:17; #配置存儲RSA私鑰的索引號。 ssl_verify_client off; #for one way https #表示不驗證客戶端。 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } } …
執行以下命令啟動Nginx代理。
cd /home/tass/nginx/sbin ./nginx
步驟五:測試驗證
部署完成后,您可以通過以下方式驗證RSA算法和國密SM2算法服務端證書是否部署成功。
如果您使用的是RSA算法服務端證書(單證),可以通過瀏覽器直接訪問您申請的域名URL進行驗證。
如果您使用的是國密SM2算法的服務端證書(雙證),需要按照以下操作進行驗證:
在客戶端安裝支持國密算法的瀏覽器(例如360安全瀏覽器),將簽發給服務端的CA證書導入到瀏覽器,并設置為信任。
拷貝ECS2中證書文件/home/tass/tassl/cert/sm2/ca.crt的內容到C:\Users\Administrator\AppData\Roaming\360se6\User Data\Default\gmssl\ctl.dat文件。
重啟瀏覽器。
在C:\Windows\System32\drivers\etc路徑修改hosts文件,將服務器地址指向您的測試域名。
通過瀏覽器訪問您的測試域名。