我试图通过几个步骤处理X509证书,并遇到几个问题.我是新来的JCE,所以我不完全是最新的一切.

我们希望能够根据不同的编码(PEM,DER和PCKS7)来解析几个不同的X509证书.我使用FireFox(证书包括链)从PEC和PCKS7格式从https://belgium.be导出了相同的证书.我已经离开了几条线,这些问题不是必需的

public List parse(FileInputStream fis) {

/*

* Generate a X509 Certificate initialized with the data read from the inputstream.

* NOTE: Generation fails when using BufferedInputStream on PKCS7 certificates.

*/

List certificates = null;

log.debug("Parsing new certificate.");

certificates = (List) cf.generateCertificates(fis);

return certificates;

}

这个代码工作正常,因为我使用FileInputStream而不是PCKS7的BufferedInputStream,这是非常奇怪的,我认为?但我可以和它一起生活

下一步是验证这些证书链.

1)检查所有证书是否具有有效的日期(简单)

2)使用OCSP验证证书链(如果证书中没有找到OCSP URL,则返回CRL).这是我不完全确定如何处理这个问题.

我正在使用Sun JCE,但是似乎没有那么多的文档(在示例中)?

我首先做了一个简单的实现,只检查链,而不经过OCSP / CRL检查.

private Boolean validateChain(List certificates) {

PKIXParameters params;

CertPath certPath;

CertPathValidator certPathValidator;

Boolean valid = Boolean.FALSE;

params = new PKIXParameters(keyStore);

params.setRevocationEnabled(false);

certPath = cf.generateCertPath(certificates);

certPathValidator = CertPathValidator.getInstance("PKIX");

PKIXCertPathValidatorResult result = (PKIXCertPathValidatorResult)

certPathValidator.validate(certPath, params);

if(null != result) {

valid = Boolean.TRUE;

}

return valid;

}

这对我的PEM证书工作正常,但不是为了PCKS7证书(相同的证书,仅以其他格式导出).

java.security.cert.CertPathValidatorException:Path不链接任何信任锚.

我唯一可以看到的区别是,CertPath的形成顺序是不一样的?我不能弄清楚出了什么问题,所以我现在离开了,并继续使用PEM证书,但是我们可以称之为这个问题1)

之后我想实现的是OCSP检查.

显然,如果我启用OCSP使用:Security.setProperty(“ocsp.enable”,“true”);并设置params.setRevocationEnabled(true);

它应该能够自己找到OCSP URL,但似乎不是这样.什么标准实现应该做(问题2)?

java.security.cert.CertPathValidatorException:必须指定OCSP响应程序的位置

过去这一点,我发现了一种使用AuthorityInfoAccessExtension从证书中检索OCSP网址的方法.

但是在ocsp.url属性中手动设置OCSP网址后,我得到一个java.security.cert.CertPathValidatorException:OCSP响应错误:UNAUTHORIZED

似乎我错过了很多必要的步骤,而许多在线参考文献说,设置ocsp.enable属性应该是你需要做的所有事情?

也许你们中的任何一个人都不能指导我完成这个过程吗?告诉我我完全错误的地方:)

如果没有找到OCSP,下一步将实施CRL检查,如果有人可以指出任何示例或向我显示一些文档,这也将不胜感激!

谢谢!

编辑:

由于它不是自己拾取属性,所以我一直在尝试使用以下命令设置所有属性:

// Activate OCSP

Security.setProperty("ocsp.enable", "true");

// Activate CRLDP -- no idea what this is

Security.setProperty("com.sun.security.enableCRLDP", "true");

X509Certificate target = (X509Certificate) certPath.getCertificates().get(0);

Security.setProperty("ocsp.responderURL","http://ocsp.pki.belgium.be/");

Security.setProperty("ocsp.responderCertIssuerName", target.getIssuerX500Principal().getName());

Security.setProperty("ocsp.responderCertSubjectName", target.getSubjectX500Principal().getName());

Security.setProperty("ocsp.responderCertSerialNumber", target.getSerialNumber().toString(16));

哪一个例外:

java.security.cert.CertPathValidatorException:找不到响应者的证书(使用OCSP安全属性进行设置).

x509 java_Java X509证书解析和验证相关推荐

  1. 数字证书 X509详解 python解析SSL证书

    数字证书 ​ 数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证.它是由一个由权威机构-----C ...

  2. gmssl编程之X509证书解析

    gmssl编程之X509证书解析 引言 X509语法结构 基本项 证书版本号 证书序列号 证书颁发者 证书使用者 证书有效期 证书公钥 扩展项 基本约束 密钥用途 增强型密钥用途 颁发者标识 使用者标 ...

  3. golang x509包 数字证书相关介绍

    在go语言提供的系统包中包含了大量和数字证书有关的方法.在这些方法中就有私钥生成的方法.私钥解析的方法.证书请求生成的方法.证书生成的方法等等.通过这些方法应该能够实现和openssl命令类似的功能. ...

  4. https原理:证书传递、验证和数据加密、解密过程解析 (转)

    http://www.cnblogs.com/zhuqil/archive/2012/07/23/2604572.html 我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站 ...

  5. TLS/HTTPS 证书生成与验证

    https://www.cnblogs.com/kyrios/p/tls-and-certificates.html 最近在研究基于ssl的传输加密,涉及到了key和证书相关的话题,走了不少弯路,现在 ...

  6. Hyperledger Fabric 1.0 实战开发系列 第⑤课 fabric 证书解析

    通过cryptogen生成所有证书文件后,以peerOrgannizations的第一个组织树org1为例,每个目录和对应文件的功能如下: ca: 存放组织的根证书和对应的私钥文件,默认采用EC算法, ...

  7. AFNetworking框架下的SSL服务器证书的自定义验证

    2019独角兽企业重金招聘Python工程师标准>>> # AFNetworking框架下的SSL服务器证书的自定义验证 ## 如何使用本地证书进行SSL验证 #### 开启SSL验 ...

  8. 代码整洁之道------它山之玉可以重构:身份证号码解析、验证工具(第一天)

    首先感谢原作者的代码: < 面向对象的15位.18位中国大陆身份证号码解析.验证工具>. 如果有版权问题,敬请告知. 原代码给了我很好的起点,是的,这些代码都是玉,我在这只是再琢磨琢磨. ...

  9. Https的CA证书是如何验证其有效性的?

    一.证书作用 证书验证的过程是使用非对称加密的,客户端对服务器端发起请求,服务器返回一个证书,客户端验证这个证书的合法性,如果这个证书是合法的,那么就生成一个随机值,利用这个随机值作为对称加密的钥匙 ...

  10. 如何为WCF应用添加X509证书和安全验证

    一.首先用Visual Studio 命令提示创建证书 makecert -sr LocalMachine -ss My -a sha1 -n CN=Webabcd -sky exchange -pe ...

最新文章

  1. 数据库定时导出和互备一例
  2. select函数测试
  3. Lua开发学习4-普通循环和迭代器循环
  4. 杭州 3~5年 前端面经,高频面试题总结
  5. 程序员的相亲那件小事,指南献给您
  6. springboot 指定 logback_spring boot与日志
  7. PMP备考资料和备考经验分享(基于PMP第六版)
  8. OpenCV老版本下载方法
  9. 联想云计算机终端,联想智能云教室系统 V1.3.20.1109_C201105 最新官网版本
  10. 怎么修改打印机服务器权限,Win7怎么设置网络打印机管理权限?
  11. 计算机通信网络(二)路由基本概念及静态路由配置
  12. 戴尔服务器收集硬件日志的工具dest
  13. oracle18c静默安装教程,Oracle 18c 19c 安装的 DBT-50000 错误解决
  14. android业余手机开发,赚钱心得
  15. NOIP模拟赛 17.10.10
  16. 使用wireshark抓取聊天信息与爬虫入门
  17. 5.11 Go语言文本大数据处理(2):文件分割与入库
  18. 你想玩物联网开发板吗?和我一起学习啊
  19. 就业感言:纸上得来终觉浅,绝知此事要躬行
  20. Java 8 的发展

热门文章

  1. php实现三级导航栏效果
  2. 数组、集合和列表的区别
  3. 树莓派使用指令集驱动TSC打印机
  4. 【基础】华为设备RIP协议原理及配置全集
  5. linux 安装vim 8.2(支持python3)
  6. 模糊综合评价指标如何计算?四种模糊算子如何计算?
  7. 服装进销存软件哪个好?十大优质服装进销存管理软件排名
  8. matlab 亚像素边缘检测,一种亚像素边缘检测方法与流程
  9. 向日葵显示不能连接服务器,手机向日葵远程连接服务器
  10. 跑分cpu_跑分完爆骁龙 865?明年这些中端处理器真的要起飞