Java查看https证书过期时间(JKS,CERT)

在这里需要使用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;
    }
}

运行结果 

Java查看https证书过期时间(JKS,CERT)_第1张图片

其他证书,欢迎补充!!

你可能感兴趣的:(Java,https,网络协议,http)