Not-Yet-Commons-SSL 是 Apache 许可证下的一款 Java 类库,它提供易于使用的 API,并支持各种各样的证书格式和配置选项,来达到简化 SSL 的使用的目的。尤其是,它允许在单个 JVM 中使用多个证书,优雅地处理自签名证书,以及支持所有标准的证书格式,从而解决了一些长期以来一直存在的 Java 内建的 SSL 支持问题。
这个项目提出了五个设计目标,同时也总结了该库的特性:
使 SSL 和 Java 更加简单。你曾经想在你的 Java 应用中以一种安全的方式来使用自签名证书吗?或是在单个运行的 JVM 中使用不止一个客户端证书?你当然可以编辑你的
$JAVA_HOME%/jre/lib/security/cacerts
文件,或者通过-Djavax.net.ssl.keyStore=/path/to/keystore
来调用 Java。这两个办法在开始的时候都很不错,但它们伸缩性并不好。你真的会想因为那些系统范围的变化,而污染掉你 JVM 中(HTTP、LDAP、JDBC、RMI 等等)每个 SSL 套接字吗?Commons-SSL 可以让你一种自然的方式对每一个SSLSocketFactory
控制你需要的 SSL 选项,而且那些选项不会混入到你系统的其它部分。
增强安全性。 CRL 检查缺省是打开的。我们希望会很快添加对 OCSP 的支持!每过 24 小时就不得不从 Thawte 和 Verisign 下载大约 500KB 大小的 CRL 文件,这的确很令人讨厌。OCSP 就是针对它的改善。
增强灵活性。一旦创建
SSLSocketFactory
,就可以对检查主机名、过期期限、CRL 的和许多其他的选项进行开关设置。
支持更多的文件格式,而且更加智能化。- commons-ssl 支持 PKCS8 的超过 50 种格式 ,以及 PEM 或 DER 编码的 OpenSSL 加密私钥。
- X.509 证书可以使用 PEM 或者 DER 编码。也可以以 PKCS7 链的形式产生(公平地说,Java 一直支持这个)。
- PKCS12 文件可以用 PEM 编码(由
openssl pkcs12
创建)。- 在 Base64-PEM 的解析过程中对多余的空格或者注释更加宽容,尤其是超出 Base64 区段的部分。
对 KeyMaterial 或 TrustMaterial 类型的自动检测。消费者不需要知道 keystore 是 PKCS12 还是 JKS。他们只需要知道密码来解密私钥。
Not-Yet-Commons-SSL 是在英属哥伦比亚信用联盟中心(Credit Union Central of British Columbia)开发的,并于 2006 年捐赠给 Apache 软件基金会。它现在正处于 Apache 孵化器中,希望很快在接下来的几个月成为 Apache-Commons 项目的一部分。
Dejan Bosanac 就与 Java 的内建功能做了比较,写到:
如果你曾经使用过 Java 的 SSL 套接字连接,你可能会知道 Java 缺省支持它自己的 JKS 和 PKCS12 证书格式。对于那些需要使用 OpenSSL 的人来说,通常建议把 key 和证书转化成 PKCS12,然后使用 JDK 提供的
keytool
命令导入到 keystore。 虽然这对大多数应用程序来说算不了什么,但还是应该有一个更好的解决方案提供给那些非常依赖 SSL 的项目。 Not-Yet-Commons-SSL 项目之所以叫这个名字是因为,它还不是 Apache 的官方项目,它的目标在于简化 Java 和 SSL 的集成。
查看英文原文: Not-Yet-Commons-SSL Provides Powerful (and Free) SSL Capabilities
评论