全部產品
Search
文件中心

Key Management Service:認證管家快速入門

更新時間:Jul 06, 2024

您可以使用認證管家託管密鑰和認證,並進行簽名驗簽。本文為您介紹如何建立、下載、匯入和使用認證。

步驟一:建立並下載認證

  1. 登入Key Management Service控制台
  2. 在頁面左上方的地區下拉式清單,選擇認證所在的地區。
  3. 在左側導覽列,單擊認證
  4. 單擊建立認證
  5. 建立認證對話方塊,設定以下參數。
    參數說明
    名稱認證使用主體名稱。
    省/地區使用ISO 3166-1的二位國家代碼。例如:CN代表中國。
    省/市省、直轄市、自治區或特別行政區名稱。
    城市城市名稱。
    公司名稱企業、單位、組織或機構的法定名稱。

    單擊右側加號,可以添加多個公司名稱。

    部門名稱部門名稱。

    單擊右側加號,可以添加多個部門名稱。

    郵箱認證持有人或管理者郵箱。
    主體別名當認證為DV認證時,可使用主體別名產生多網域名稱認證請求。

    單擊右側加號,輸入主體別名,然後單擊對勾

    密鑰類型取值:
    • RSA_2048
    • EC_SM2
    • EC_P256
    說明 請根據認證應用系統密鑰演算法支援情況選擇。EC_P256安全性較高,RSA_2048相容性較好,但部分應用系統將在2030年12月31日停止支援RSA_2048密鑰。
    私密金鑰可否匯出認證私密金鑰是否需要匯出使用。取值:
    • 是:認證私密金鑰需要匯出使用。
    • 否:認證私密金鑰不需要匯出使用。建議選擇否,以便使用更高安全層級的密鑰保護。
  6. 單擊建立認證
  7. 建立認證成功對話方塊,單擊下載認證請求
  8. 單擊確定

步驟二:擷取CA頒發的認證

步驟一下載的.csr格式的認證請求檔案提交給CA機構,擷取正式的認證和憑證鏈結。

步驟三:匯入認證

  1. 在認證列表頁面,找到目標認證,在操作列選擇更多 > 匯入認證
  2. 匯入認證對話方塊,輸入或上傳步驟二擷取的認證和憑證鏈結。
  3. 單擊確定
    匯入認證成功後,認證狀態為啟用中,您可以使用認證進行密鑰管理、簽名驗簽等操作。

步驟四:認證簽名

  • 方法一:調用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();
    }