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实例视为已验证。