証明書マネージャーを使用して、秘密鍵と証明書を管理できます。 証明書マネージャを使用して署名を生成および検証することもできます。 このトピックでは、証明書の作成、証明書署名要求 (CSR) のダウンロード、証明書のインポート、証明書の使用方法について説明します。

ステップ1: 証明書を作成し、CSRをダウンロードする

  1. KMS コ ンソールにログインします。
  2. 上部のナビゲーションバーで、証明書を作成するリージョンを選択します。
  3. 左側のナビゲーションウィンドウで、[証明書] をクリックします。
  4. [証明書] ページで、[証明書の作成] をクリックします。
  5. [証明書の作成] ダイアログボックスで、次のパラメーターを設定します。
    パラメーター 説明
    CommonName(CN) 証明書を使用するエンティティの名前。
    国 (C) ISO 3166-1の標準に従うalpha-2国コード。 例えば、CNは中国を示す。
    StateOrProvince(ST) 州、自治体、自治区、または特別行政区の名前。
    ローカル (L) 都市の名前。
    組織 (O) 企業、会社、組織、または機関の正式名称。

    プラス記号 (+) をクリックすると、さらに名前を追加できます。

    OrganizationUnit(OU) 部門の名前。

    プラス記号 (+) をクリックすると、さらに名前を追加できます。

    メール (E) 証明書の所有者または管理者のメールアドレス。
    SubjectAlternativeNames 証明書がドメイン検証済み (DV) 証明書の場合、サブジェクトの代替名を追加して、マルチドメインCSRを生成できます。

    プラス記号 (+) をクリックし、件名の別名を入力してから、右アイコンをクリックします。

    キー仕様 設定可能な値は以下のとおりです。
    • RSA_2048
    • EC_SM2
    • EC_P256
    証明書申請システムでサポートされているアルゴリズムに基づいて値を選択します。 EC_P256は高度なセキュリティを提供し、RSA_2048は高い互換性を提供します。 ただし、特定のアプリケーションシステムは、2030年12月31日時点でRSA_2048をサポートしなくなります。
    Exportableキー 証明書の秘密鍵をエクスポートして使用できるかどうかを指定します。 設定可能な値は以下のとおりです。
    • はい: 証明書の秘密鍵をエクスポートして使用できます。
    • いいえ: 証明書の秘密鍵をエクスポートして使用することはできません。 セキュリティのため、[いいえ] を選択することを推奨します。
  6. [証明書の作成] をクリックします。
  7. [正常に作成された証明書] ダイアログボックスで、[証明書リクエストのダウンロード] をクリックします。
  8. [OK] をクリックします。

ステップ2: CA発行の証明書を取得する

ステップ1でダウンロードしたCSRファイルを認証局 (CA) に送信して、検証済みの証明書と証明書チェーンを取得します。

ステップ3: 証明書のインポート

  1. 証明書リストで証明書を見つけ、[操作] 列の [詳細] > [証明書のインポート] を選択します。
  2. [証明書のインポート] ダイアログボックスで、手順2で取得した証明書と証明書チェーンをアップロードするか、証明書と証明書チェーンの内容を入力します。
  3. [OK] をクリックします。
    証明書をインポートすると、証明書の状態は [アクティブ] になります。 証明書を使用して、さまざまな操作を実行できます。 たとえば、キーの管理、署名の生成、または署名の検証を行うことができます。

ステップ4: 証明書を使用して署名を生成する

  • 方法1: CertificatePrivateKeySign 操作を呼び出して、証明書を使用して署名を生成します。
  • 方法2: KMS SDKを使用して、証明書を使用して署名を生成します。 KMS SDKの詳細については、「SDK」をご参照ください。 サンプルJavaコード:
    com.aliyuncs.DefaultAcsClientをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.kms.mo del.v20160120.CertificatePrivateKeySignRequestをインポートします。com.aliyuncs.kms.mo del.v20160120.CertificatePrivateKeySignResponseをインポートします。impor t org.apache.com mons.codec.binary.Base64;
    
    /**
     * @ param client Alibaba Cloud SDKクライアント。 詳細については、Alibaba Cloud SDK For Javaのドキュメントをご参照ください。 
     * @ param certId使用する証明書のID。 
     * @ param sigAlgデジタル署名アルゴリズム。 詳細については、KMS API操作CertificatePrivateKeySignのリファレンスドキュメントを参照してください。 
     * @ paramメッセージ署名したいコンテンツ。 コンテンツのサイズは4 KB以下でなければなりません。 
     * /
    public byte[] doSignByCertificate(DefaultAcsClientクライアント、String certId、String sigAlg、byte[] メッセージ) throws ClientException {
        String msgB64 = Base64.encodeBase64String(message); // Base64にサインインするコンテンツをエンコードします。 
        CertificatePrivateKeySignRequest request=新しいCertificatePrivateKeySignRequest();
        request.setCertificateId(certId);
        request.setAlgorithm(sigAlg);
        request.setMessage(msgB64);
    
        CertificatePrivateKeySignResponseレスポンス=client.getAcsResponse (リクエスト);
    
        文字列sigB64 = response.getSignatureValue();
        戻り値Base64.decodeBase64(sigB64); // 返されたBase64-encodedデータをデコードして、署名の値を取得します。 
    }

ステップ5: 証明書を使用して署名を検証する

  • 方法1: CertificatePublicKeyVerify 操作を呼び出して、証明書を使用して署名を検証します。
  • 方法2: KMS SDKを使用して、証明書を使用してデジタル署名を検証します。 KMS SDKの詳細については、「SDK」をご参照ください。 サンプルJavaコード:
    com.aliyuncs.DefaultAcsClientをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.kms.mo del.v20160120.CertificatePublicKeyVerifyRequestをインポートします。com.aliyuncs.kms.mo del.v20160120.CertificatePublicKeyVerifyResponseをインポートします。impor t org.apache.com mons.codec.binary.Base64;
    
    /**
     * @ paramクライアントAlibaba Cloud SDKクライアント。 詳細については、Alibaba Cloud SDK For Javaのドキュメントをご参照ください。 
     * @ param certId使用する証明書のID。 
     * @ param sigAlgデジタル署名アルゴリズム。 詳細については、KMS API操作CertificatePrivateKeySignのリファレンスドキュメントを参照してください。 
     * @ paramメッセージ確認する内容です。 コンテンツのサイズは4 KB以下でなければなりません。 
     * @ param signature検証するコンテンツのデジタル署名。 
     * /
    パブリックブールdoVerifyByCertificate(DefaultAcsClientクライアント、String certId、String sigAlg、byte[] message、byte[] signature) がClientException {
        String msgB64 = Base64.encodeBase64String(message); // Base64で検証するコンテンツをエンコードします。 
        String sigB64 = Base64.encodeBase64String(signature); // Base64で署名値をエンコードします。 
        CertificatePublicKeyVerifyRequestリクエスト=新しいCertificatePublicKeyVerifyRequest();
        request.setCertificateId(certId);
        request.setAlgorithm(sigAlg);
        request.setMessage(msgB64);
        request.setSignatureValue(sigB64);
    
        CertificatePublicKeyVerifyResponseレスポンス=client.getAcsResponse (リクエスト);
    
        return response.getSignatureValid();
    }