Java证书
时间:2020-01-09 10:35:53 来源:igfitidea点击:
Java证书类(java.security.cert.Certificate)代表密码身份证书。 Java"证书"类实例包含名称以及它标识的实体的其他详细信息,还可能包含来自证书颁发机构(CA)的数字签名。
JavaCertificate类是一个抽象类,因此尽管我们可以使用Certificate作为变量类型,但是变量将始终指向Certificate的子类。
JavaCertificate类具有X509Certificate类的一个子类。此类表示" X.509"证书,该证书在HTTPS和TLS中用作身份证书。
获取证书实例
我们可以通过以下方式获取Certificate实例:
- 从CertificateFactory。
- 从密钥库。
getEncoded()
JavaCertificate``getEncoded()方法以字节数组的形式返回Certificate的编码版本。例如,如果"证书"是" X509证书",则返回的字节数组将包含"证书"实例的X.590(ASN.1 DER)编码版本。这是一个getEncoded()示例:
byte[] encodedCertificate = certificate.getEncoded();
getPublicKey()
JavaCertificate``getPublicKey()方法返回该Certificate实例的PublicKey。这是一个" getPublicKey()"示例:
PublicKey certificatePublicKey = certificate.getPublicKey();
getType()
JavaCertificate``getType()方法返回Certificate实例的类型。这是一个" getType()"示例:
String certificateType = certificate.getType();
核实()
JavaCertificate类包含三个verify()方法。这些方法可用于验证"证书"是否确实与匹配预期公钥的私钥进行了签名。这是一个JavaCertificateverify()`的例子:
// get expected public key from somewhere else (not Certificate instance !!)
PublicKey expectedPublicKey = ... ;
try{
certificate.verify(expectedPublicKey);
} catch (InvalidKeyException e) {
// certificate was not signed with given public key
} catch (NoSuchAlgorithmException |
NoSuchProviderException |
SignatureException |
CertificateException e){
// something else went wrong
}
verify()方法返回void。如果验证失败,则将抛出" InvalidKeyException"。如果没有抛出异常,则可以将Certificate实例视为已验证。

