您可以使用證書管家托管密鑰和證書,并進(jìn)行簽名驗(yàn)簽。本文為您介紹如何創(chuàng)建、下載、導(dǎo)入和使用證書。
步驟一:創(chuàng)建并下載證書
步驟二:獲取CA頒發(fā)的證書
將步驟一下載的.csr格式的證書請(qǐng)求文件提交給CA機(jī)構(gòu),獲取正式的證書和證書鏈。
步驟三:導(dǎo)入證書
步驟四:證書簽名
- 方法一:調(diào)用CertificatePrivateKeySign接口使用指定證書生成數(shù)字簽名。
- 方法二:通過KMS SDK使用指定證書生成數(shù)字簽名。關(guān)于KMS SDK的更多信息,請(qǐng)參見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 表示數(shù)字簽名算法,詳見KMS CertificatePrivateKeySign接口文檔。 * @param message 表示待簽名內(nèi)容,需要小于等于4KB。 */ public byte[] doSignByCertificate(DefaultAcsClient client, String certId, String sigAlg, byte[] message) throws ClientException { String msgB64 = Base64.encodeBase64String(message); // 對(duì)待簽名內(nèi)容進(jìn)行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); // 對(duì)返回?cái)?shù)據(jù)進(jìn)行Base64解碼獲取簽名值數(shù)據(jù)。 }
步驟五:證書驗(yàn)簽
- 方法一:調(diào)用CertificatePublicKeyVerify接口使用指定證書驗(yàn)證數(shù)字簽名。
- 方法二:通過KMS SDK使用指定證書驗(yàn)證數(shù)字簽名。關(guān)于KMS SDK的更多信息,請(qǐng)參見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,指定要使用的數(shù)字證書。 * @param sigAlg 表示數(shù)字簽名算法,詳見KMS CertificatePrivateKeySign接口參考。 * @param message 表示待驗(yàn)證內(nèi)容,需要小于等于4KB。 * @param signature 表示待驗(yàn)證內(nèi)容的數(shù)字簽名。 */ public Boolean doVerifyByCertificate(DefaultAcsClient client, String certId, String sigAlg, byte[] message, byte[] signature) throws ClientException { String msgB64 = Base64.encodeBase64String(message); // 對(duì)待驗(yàn)證內(nèi)容進(jìn)行Base64編碼。 String sigB64 = Base64.encodeBase64String(signature); // 對(duì)簽名值進(jìn)行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(); }