用于证书吊销检查的 java api
Java 开箱即用地支持 OCSP。
不过,它的完成方式(我的意思是撤销检查)对程序员来说是透明的。
我的问题是,是否有任何 api(java 的一部分)可以创建有效的 OCSP 请求或响应?那么程序员是否可以实现自定义 OCSP 检查器?
Java supports OCSP out of the box.
The way it is being done though, (I mean the revocation check) is transparent to the programmer.
My question is, is there any api (part of java) that can create a valid OCSP request or response? So that it would be possible for a programmer to implement a custom OCSP checker?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
标准 Java API 不提供公开可用的类来处理 OCSP。在 Sun/Oracle 的 JDK 中,OCSP 管理类位于
sun.security.provider.certpath
包(即 Java 规范之外的包)中,并且不是public
(因此,在授予自己扩展访问权限后,如果不求助于反射,您就无法使用它们)。另外,Sun/Oracle 的 JDK 中的实现是纯客户端:它可以对请求进行编码并对响应进行解码,但不能对请求进行解码或对响应进行编码。
因此,实现自定义 OCSP 检查器需要手动实现编码和解码机制:可以完成,但不能用五行代码完成。 EJBCA是一个开源的PKI,完全用Java编写,其中包括对OCSP的一些支持(不知道是否解压OCSP 代码包含在另一个应用程序中是否容易)。
The standard Java API does not provide publicly available classes to handle OCSP. In Sun/Oracle's JDK, the OCSP management classes are in the
sun.security.provider.certpath
package (i.e. a package which is outside of the Java specification) and are notpublic
(so you cannot use them without resorting to reflection, after giving yourself extended access rights).Also, the implementation in Sun/Oracle's JDK is a pure client: it can encode requests and decode responses, but it cannot decode requests or encode responses.
Hence, implementing a custom OCSP checker would entail implementing the encoding and decoding mechanisms manually: it can be done, but not in five lines of code. EJBCA is an opensource PKI, entirely written in Java, which includes some support for OCSP (I do not know whether extracting the OCSP code for inclusion in another application would be easy or not).
请注意,Java 8 有一个 JEP 124 - 增强证书吊销检查 API,它应该提供新的 API专门用于证书吊销。
查看描述新功能的最近的 Oracle 博客文章,以及官方草案自述文件。
希望这有帮助。
Note that Java 8 has a JEP 124 - Enhance the Certificate Revocation-Checking API which should provide new APIs specifically for certificate revocation.
Check out a recent Oracle blog post describing the new functionality, as well as the official Draft Readme.
Hope this helps.