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;
    }
}

运行结果 

其他证书,欢迎补充!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下步骤将Windows上的HTTPS证书转换为JKS格式: 1. 打开Windows上的“证书管理器”: - 在Windows搜索栏中输入“certmgr.msc”并打开证书管理器。 2. 导出证书: - 在证书管理器中,展开“个人”文件夹,并找到您要转换的HTTPS证书。 - 右键单击证书,选择“所有任务” > “导出”。 - 在导出向导中,选择“是,导出私钥”选项,并点击“下一步”。 - 选择“PKCS #12(PFX)”作为导出文件格式,并点击“下一步”。 - 指定导出文件的路径和名称,并设置一个密码以保护私钥。 - 点击“下一步”完成导出过程。 3. 转换为JKS格式: - 下载并安装Java Development Kit(JDK)(如果尚未安装)。 - 打开命令提示符窗口。 - 在命令提示符中,导航到您的JDK安装目录的“bin”文件夹。 - 运行以下命令来执行转换操作: ``` keytool -importkeystore -srckeystore [证书路径.pfx] -srcstoretype PKCS12 -destkeystore [目标.jks] -deststoretype JKS ``` 其中,将 `[证书路径.pfx]` 替换为您导出的证书文件路径,将 `[目标.jks]` 替换为您要转换为的JKS文件路径和名称。 - 按照提示输入密码,并选择是否信任证书。 4. 完成转换: - 转换成功后,您将在指定的目标路径中找到生成的JKS文件。 请注意,上述步骤中的命令是基于Java的`keytool`工具,因此您需要安装JDK并确保`keytool`可在命令提示符中使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值