java 证书解析_java – 从证书DN中解析CN

首先我要指出,这是一个美学问题。我已经解决了自己的问题,我只是好奇的做更好的方法。

所以,我有一个证书DN,像这样:

CN = Jimmy Blooptoop,OU = Someplace,OU = Employees,DC = Bloopsoft-Inc

现在,我想抓住这个CN。在java中,没有使用X509证书的完整DN,而不使用像弹性城堡这样的第三方库,我不能使用,而不是本地支持。所以我必须解析出来,这不是什么问题。唯一使它稍微棘手的事情是,CN并不总是被格式化为 。通常情况下,它实际上将是 。所以,在上面的例子中,CN可以是Jimmy Blooptoop或Blooptoop,Jimmy J(当然是Joop的缩写)。

在阅读了关于正则表达式之后,我写了以下内容,其效果很好:

Matcher m = Pattern.compile("CN=[A-Za-z]*[, ]*[ A-Za-z]*").matcher(dn);

if (m.find())

cn = m.group();

我只是好奇,如果有表达式看起来不像垃圾。我相信自己在阅读了正则表达式之后就已经做到了这一点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个示例代码片段,展示如何从证书文件加载X.509证书: ``` import java.io.FileInputStream; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; public class LoadCertificateFromFile { public static void main(String[] args) throws Exception { // 指定证书文件路径 String certFile = "/path/to/certificate.crt"; // 创建CertificateFactory对象 CertificateFactory cf = CertificateFactory.getInstance("X.509"); // 从文件加载证书 FileInputStream fis = new FileInputStream(certFile); X509Certificate cert = (X509Certificate) cf.generateCertificate(fis); // 打印证书信息 System.out.println("Subject DN: " + cert.getSubjectDN()); System.out.println("Issuer DN: " + cert.getIssuerDN()); System.out.println("Serial number: " + cert.getSerialNumber()); System.out.println("Valid from: " + cert.getNotBefore()); System.out.println("Valid until: " + cert.getNotAfter()); System.out.println("Public key algorithm: " + cert.getPublicKey().getAlgorithm()); } } ``` 在上面的示例,我们指定证书文件的路径,然后创建一个CertificateFactory对象,该对象用于解析证书。接下来,我们使用FileInputStream从文件读取证书,并使用generateCertificate方法将其转换为X509Certificate对象。最后,我们打印证书的一些信息,例如主题DN、发布者DN、序列号、有效期等等。 请注意,以上示例的代码可能会抛出一些异常,因此需要在代码添加必要的异常处理程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值