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;}
}
运行结果
其他证书,欢迎补充!!