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()
方法。这些方法可用于验证"证书"是否确实与匹配预期公钥的私钥进行了签名。这是一个JavaCertificate
verify()`的例子:
// 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
实例视为已验证。