您可以使用認證管家託管密鑰和認證,並進行簽名驗簽。本文為您介紹如何建立、下載、匯入和使用認證。
步驟一:建立並下載認證
- 登入Key Management Service控制台。
- 在頁面左上方的地區下拉式清單,選擇認證所在的地區。
- 在左側導覽列,單擊認證。
- 單擊建立認證。
- 在建立認證對話方塊,設定以下參數。
參數 說明 名稱 認證使用主體名稱。 省/地區 使用ISO 3166-1的二位國家代碼。例如:CN代表中國。 省/市 省、直轄市、自治區或特別行政區名稱。 城市 城市名稱。 公司名稱 企業、單位、組織或機構的法定名稱。 單擊右側加號,可以添加多個公司名稱。
部門名稱 部門名稱。 單擊右側加號,可以添加多個部門名稱。
郵箱 認證持有人或管理者郵箱。 主體別名 當認證為DV認證時,可使用主體別名產生多網域名稱認證請求。 單擊右側加號,輸入主體別名,然後單擊。
密鑰類型 取值: - RSA_2048
- EC_SM2
- EC_P256
說明 請根據認證應用系統密鑰演算法支援情況選擇。EC_P256安全性較高,RSA_2048相容性較好,但部分應用系統將在2030年12月31日停止支援RSA_2048密鑰。私密金鑰可否匯出 認證私密金鑰是否需要匯出使用。取值: - 是:認證私密金鑰需要匯出使用。
- 否:認證私密金鑰不需要匯出使用。建議選擇否,以便使用更高安全層級的密鑰保護。
- 單擊建立認證。
- 在建立認證成功對話方塊,單擊下載認證請求。
- 單擊確定。
步驟二:擷取CA頒發的認證
將步驟一下載的.csr格式的認證請求檔案提交給CA機構,擷取正式的認證和憑證鏈結。
步驟三:匯入認證
- 在認證列表頁面,找到目標認證,在操作列選擇 。
- 在匯入認證對話方塊,輸入或上傳步驟二擷取的認證和憑證鏈結。
- 單擊確定。匯入認證成功後,認證狀態為啟用中,您可以使用認證進行密鑰管理、簽名驗簽等操作。
步驟四:認證簽名
- 方法一:調用CertificatePrivateKeySign介面使用指定認證產生數位簽章。
- 方法二:通過KMS SDK使用指定認證產生數位簽章。關於KMS SDK的更多資訊,請參見SDK概覽。Java程式碼範例如下:
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.kms.model.v20160120.CertificatePrivateKeySignRequest; import com.aliyuncs.kms.model.v20160120.CertificatePrivateKeySignResponse; import org.apache.commons.codec.binary.Base64; /** * @param client 表示Alibaba Cloud SDK Client,詳見Alibaba Cloud SDK for Java文檔。 * @param certId 表示認證ID,指定要使用的認證。 * @param sigAlg 表示數位簽章演算法,詳見KMS CertificatePrivateKeySign介面文檔。 * @param message 表示待簽名內容,需要小於等於4KB。 */ public byte[] doSignByCertificate(DefaultAcsClient client, String certId, String sigAlg, byte[] message) throws ClientException { String msgB64 = Base64.encodeBase64String(message); // 對待簽名內容進行Base64編碼。 CertificatePrivateKeySignRequest request = new CertificatePrivateKeySignRequest(); request.setCertificateId(certId); request.setAlgorithm(sigAlg); request.setMessage(msgB64); CertificatePrivateKeySignResponse response = client.getAcsResponse(request); String sigB64 = response.getSignatureValue(); return Base64.decodeBase64(sigB64); // 對返回資料進行Base64解碼擷取簽名值資料。 }
步驟五:認證驗簽
- 方法一:調用CertificatePublicKeyVerify介面使用指定認證驗證數位簽章。
- 方法二:通過KMS SDK使用指定認證驗證數位簽章。關於KMS SDK的更多資訊,請參見SDK概覽。Java程式碼範例如下:
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.kms.model.v20160120.CertificatePublicKeyVerifyRequest; import com.aliyuncs.kms.model.v20160120.CertificatePublicKeyVerifyResponse; import org.apache.commons.codec.binary.Base64; /** * @param client 表示Alibaba Cloud SDK Client,詳見Alibaba Cloud SDK for Java文檔。 * @param certId 表示認證ID,指定要使用的數位憑證。 * @param sigAlg 表示數位簽章演算法,詳見KMS CertificatePrivateKeySign介面參考。 * @param message 表示待驗證內容,需要小於等於4KB。 * @param signature 表示待驗證內容的數位簽章。 */ public Boolean doVerifyByCertificate(DefaultAcsClient client, String certId, String sigAlg, byte[] message, byte[] signature) throws ClientException { String msgB64 = Base64.encodeBase64String(message); // 對待驗證內容進行Base64編碼。 String sigB64 = Base64.encodeBase64String(signature); // 對簽名值進行Base64編碼。 CertificatePublicKeyVerifyRequest request = new CertificatePublicKeyVerifyRequest(); request.setCertificateId(certId); request.setAlgorithm(sigAlg); request.setMessage(msgB64); request.setSignatureValue(sigB64); CertificatePublicKeyVerifyResponse response = client.getAcsResponse(request); return response.getSignatureValid(); }