赞
踩
在这里需要使用X.509 证书的抽象类 X509Certificate 。此类提供了一种访问 X.509 证书所有属性的标准方式。
这些证书被广泛使用以支持 Internet 安全系统中的身份验证和其他功能。常见的应用包括增强保密邮件 (PEM)、传输层安全 (SSL)、用于受信任软件发布的代码签名和安全电子交易 (SET)。
由证书颁发机构 (CA) 来管理和担保这些证书。CA 的工作是创建证书,方法是将数据置于 X.509 标准格式,然后以数字方式签署该数据。CA 充当受信任的第三方,在不能直接通信的主体之间传递信息。CA 证书可由其自身签名,也可由其他 CA 签名,如“根”CA。
- import java.io.FileInputStream;
- import java.io.InputStream;
- import java.security.KeyStore;
- import java.security.cert.Certificate;
- import java.security.cert.CertificateFactory;
- import java.security.cert.X509Certificate;
- import java.text.SimpleDateFormat;
- import java.util.Date;
-
- public class CertificateExpiration {
- public static void main(String[] args) {
- SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
-
- String jksFilePath = "path/to/your.jks";
- String jksPassword = "your_jks_password";
- String alias = "your_certificate_alias";
- X509Certificate x509Certificate = JksCertificateExpiration(jksFilePath, jksPassword, alias);
-
- // 获取证书的颁发日期
- Date notBefore = x509Certificate.getNotBefore();
- // 获取证书的截止日期
- Date notAfter = x509Certificate.getNotAfter();
- // 获取证书的版本号
- int version = x509Certificate.getVersion();
- // 获取证书的主体(主体标识名)值
- String name = x509Certificate.getSubjectX500Principal().getName();
-
- System.out.println("jks颁发日期:" + ft.format(notBefore));
- System.out.println("jks截止日期:" + ft.format(notAfter));
- System.out.println("jks版本号:" + version);
- System.out.println("jks主体值:" + name);
- }
-
- /**
- * @param certFilePath cert证书路径
- * @return X.509 证书所有属性
- */
- public static X509Certificate CertCertificateExpiration(String certFilePath) {
- try (InputStream inStream = new FileInputStream(certFilePath);) {
- CertificateFactory cf = CertificateFactory.getInstance("X.509");
- return (X509Certificate) cf.generateCertificate(inStream);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
-
- /**
- * @param jksFilePath jks证书路径
- * @param jksPassword jks证书密码
- * @param alias jks证书别名
- * @return X.509 证书所有属性
- */
- public static X509Certificate JksCertificateExpiration(String jksFilePath, String jksPassword, String alias) {
- //try-with-resources会自动关闭FileInputStream,无需手动调用close()方法
- try (FileInputStream fis = new FileInputStream(jksFilePath)) {
- //密钥和证书的存储设施
- KeyStore keyStore = KeyStore.getInstance("JKS");
- keyStore.load(fis, jksPassword.toCharArray());
- // 获取证书
- Certificate certificate = keyStore.getCertificate(alias);
- // 转换为X509Certificate类型
- return (X509Certificate) certificate;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- }
运行结果
其他证书,欢迎补充!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。