使用 JSSE 和 JCE 编程接口进行安全传输

可以了解有关使用 Java™ 安全套接字扩展 (JSSE) 和 Java 密码术扩展 (JCE) 编程接口时的传输安全性的更多详细信息。在本主题中,描述了 IBM® 版本的 Java 密码术扩展联邦信息处理标准 (IBMJCEFIPS)。

Java 安全套接字扩展

JSSE 为 WebSphere® Application Server 提供传输安全性。JSSE 为安全套接字层 (SSL) 和传输层安全性 (TLS) 协议提供应用程序编程接口 (API) 框架和 API 的实现,包括数据加密、消息完整性和认证这些功能。

JSSE API 已集成到 Java 2 SDK Standard Edition (J2SDK) V5 中。JSSE API 的 API 包为 javax.net.ssl.*。有关使用 JSSE API 的文档可以在以下网址处提供的 J2SE 6 API 文档中找到:http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html

随 WebSphere Application Server 一起提供的 Java 2 SDK V5 中提供了多个 JSSE 提供程序。先前的 WebSphere Application Server 发行版中使用了 IBMJSSE 提供程序。

有关新的 IBMJSSE2 提供程序的更多信息,请查看 http://www.ibm.com/developerworks/java/jdk/security/60/ 中的文档。

定制 Java 安全套接字扩展

通过插入密码术包提供程序的不同实现、X509Certificate 和 HTTPS 协议,或者指定不同的缺省密钥库文件、密钥管理器工厂和信任管理器工厂,您可以定制 JSSE 的很多方面。下表总结了可以定制的内容、缺省值情况以及可以用于提供定制的机制。
表 1. 可定制的项. 您可以定制下列关键内容:
可定制的项 缺省 定制方式
X509Certificate 来自 IBM 的 X509Certificate 实现 cert.provider.x509v1 安全属性
HTTPS 协议 来自 IBM 的实现 java.protocol.handler.pkgs 系统属性
密码术包提供程序 IBMJSSE2 安全性属性文件中 security.provider.n= 一行。 请参阅描述。
缺省密钥库 * javax.net.ssl.keyStore 系统属性
缺省信任库 如果存在,那么为 jssecacerts。否则,缺省值为 cacerts * javax.net.ssl.trustStore 系统属性
缺省密钥管理器工厂 IbmX509 ssl.KeyManagerFactory.algorithm 安全性属性
缺省信任管理器工厂 IbmX509 ssl.TrustManagerFactory.algorithm 安全性属性

对于可以通过设置系统属性来定制的内容,通过使用 Java 命令的 -D 选项来静态地设置系统属性。可以使用管理控制台来设置系统属性,或者通过在代码 System.setProperty(propertyName,"propertyValue") 中调用 java.lang.System.setProperty 方法动态地设置系统属性。

对于可以通过设置 Java 安全性属性来定制的内容,请在 java.security 属性文件中静态地指定安全性属性值。安全性属性为 propertyName=propertyValue。通过在代码中调用 java.security.Security.setProperty 方法,动态地设置 Java 安全性属性。

java.security 属性文件位于以下目录中:

[AIX Solaris HP-UX Linux Windows]app_server_root/java/jre/lib/security 目录。

[z/OS]app_server_root/properties 目录。

[IBM i]profile_root/properties 目录。

应用程序编程接口

JSSE 提供了一个标准的应用程序编程接口 (API),在 javax.net 文件、javax.net.ssl 文件和 javax.security.cert 文件的包中提供了该 API。API 包含:
  • 套接字和 SSL 套接字
  • 创建套接字和 SSL 套接字的工厂
  • 充当安全套接字工厂的安全套接字上下文
  • 密钥和信任管理器接口
  • 安全 HTTP URL 连接类
  • 公用密钥证书 API
[AIX Solaris HP-UX Linux Windows][IBM i]如果访问以下信息,那么可以找到有关 JSSE API 的更多信息:
版本 1.6
  1. 访问 Web 站点 http://www.ibm.com/developerworks/java/jdk/security/
  2. 单击 Java 1.6。
  3. 单击“Java 安全套接字扩展 (JSSE) 指南”部分中的 Javadoc HTML 文档。

使用 Java 安全套接字扩展的样本

Java 安全套接字扩展 (JSSE) 还提供了样本来演示其功能。Java 安全套接字扩展 (JSSE) 还提供了样本来演示其功能。可以在以下位置访问样本:
版本 1.6
  1. 访问 Web 站点 http://www.ibm.com/developerworks/java/jdk/security/
  2. 单击 Java 1.6。
  3. 单击“Java 安全套接字扩展 (JSSE) 指南”部分中的 jssedocs_samples.zip
表 2. 已解压缩的文件. 此表列示了下列已解压缩的文件:
文件 描述
ClientJsse.java 演示使用 JSSE 完成客户机与服务器的简单交互。使用所有已启用的密码套件。
OldServerJsse.java 后备级别样本
ServerPKCS12Jsse.java 演示使用 JSSE 和 PKCS12 密钥库文件进行客户机与服务器之间的简单交互。使用所有已启用的密码套件。
ClientPKCS12Jsse.java 演示使用 JSSE 和 PKCS12 密钥库文件进行客户机与服务器之间的简单交互。使用所有已启用的密码套件。
UseHttps.java 说明了使用 com.ibm.net.ssl.www.protocol 类的 Java 协议处理程序来访问 SSL 或非 SSL Web 服务器。指定 URL 时添加前缀 httphttps。将显示从此站点返回的 HTML。
请参阅源代码中的更多指示信息。运行样本前,请遵循这些指示信息。

Java 2 安全性的许可权

可能需要下列许可权来运行使用 JSSE 的应用程序(此列表仅供参考)。
  • java.util.PropertyPermission "java.protocol.handler.pkgs", "write"
  • java.lang.RuntimePermission "writeFileDescriptor"
  • java.lang.RuntimePermission "readFileDescriptor"
  • java.lang.RuntimePermission "accessClassInPackage.sun.security.x509"
  • java.io.FilePermission "${user.install.root}${/}etc${/}.keystore", "read"
  • java.io.FilePermission "${user.install.root}${/}etc${/}.truststore", "read"
对于 IBMJSSE 提供程序:
  • java.security.SecurityPermission "putProviderProperty.IBMJSSE"
  • java.security.SecurityPermission "insertProvider.IBMJSSE"
对于 SUNJSSE 提供程序:
  • java.security.SecurityPermission "putProviderProperty.SunJSSE"
  • java.security.SecurityPermission "insertProvider.SunJSSE"

正在调试

通过 javax.net.debug 系统属性进行配置,JSSE 将提供下列动态调试跟踪:-Djavax.net.debug=true

[AIX Solaris HP-UX Linux Windows][IBM i]如果安装了 JSSE 的调试版本,那么 true 值将打开跟踪工具。

[z/OS]true 值打开跟踪工具。使用管理控制台为调试应用程序服务器设置系统属性。

文档

有关 JSSE 的参考文档,请参阅“安全性:学习资源”主题。

JCE

Java 密码术扩展 (JCE) 为 WebSphere Application Server 提供密码、密钥和散列算法。JCE 提供了加密的框架和实现、密钥生成、密钥协议以及“消息认证码”(MAC) 算法。 对加密的支持包含对称、非对称、块和流密码。

IBMJCE

IBM 版本的 Java 密码术扩展 (IBMJCE) 是 WebSphere Application Server 中使用的 JCE 密码服务提供程序的实现。除 IBMJCE 提供了更多算法之外,IBMJCE 类似于 SunJCE:
  • 密码算法(AES、DES、TripleDES、PBEs、Blowfish 等等)
  • 签名算法(SHA1withRSA、MD5withRSA、SHA1withDSA)
  • 消息摘要算法(MD5、MD2、SHA1、SHA-256、SHA-384、SHA-512)
  • 消息认证码(HmacSHA1、HmacMD5)
  • 密钥协议算法 (DiffieHellman)
  • 随机数生成算法(IBMSecureRandom、SHA1PRNG)
  • 密钥库(JKS、JCEKS、PKCS12 和 JCERACFKS [仅适用于 z/OS])
IBMJCE 属于 com.ibm.crypto.provider.* 包。

有关更多信息,请参阅以下 Web 站点中有关 JCE 的信息:http://www.ibm.com/developerworks/java/jdk/security/60/。

IBMJCEFIPS

IBM 版本的 Java 密码术扩展联邦信息处理标准 (IBMJCEFIPS) 是 WebSphere Application Server 中使用的 JCE 密码服务提供程序的实现。IBMJCEFIPS 服务提供程序实现以下内容:
  • 签名算法(SHA1withDSA、SHA1withRSA)
  • 密码算法(AES、TripleDES、RSA)
  • 密钥协议算法 (DiffieHellman)
  • 密钥(对)生成器(DSA、AES、TripleDES、HmacSHA1、RSA、DiffieHellman)
  • 消息认证码 (MAC) (HmacSHA1)
  • 消息摘要(MD5、SHA-1、SHA-256、SHA-384、SHA-512)
  • 算法参数生成器(DiffieHellman、DSA)
  • 算法参数(AES、DiffieHellman、DES、TripleDES、DSA)
  • 密钥工厂(DiffieHellman、DSA、RSA)
  • 密钥工厂(AES、TripleDES)
  • 证书 (X.509)
  • 安全随机 (IBMSecureRandom)

应用程序编程接口

Java 密码术扩展 (JCE) 具有基于提供程序的体系结构。通过实现由 JCE 定义的 API,就可以将提供程序插入 JCE 框架中。JCE API 包含到下列方面:
  • 对称批量加密,如 DES、RC2 和 IDEA
  • 对称流加密,如 RC4
  • 非对称加密,如 RSA
  • 基于密码的加密 (RBE)
  • 密钥协议
  • 消息认证码

[AIX Solaris HP-UX Linux Windows][IBM i]在 Web 站点 http://www.ibm.com/developerworks/java/jdk/security/ 上提供了有关 JCE API 的更多信息。

使用 Java 密码术扩展的样本

在 Web 站点 http://www.ibm.com/developerworks/java/jdk/security/ 上的 jceDocs_samples.zip 文件中提供了一些样本。将该文件解压缩,并在 jceDocs/samples 目录中找到下列样本:
表 3. 使用 Java 密码术扩展的样本. 此表描述了使用 Java 密码术扩展的样本。
文件 描述
SampleDSASignature.java 说明如何生成 DSA 密钥对(公用密钥和专用密钥),并使用密钥对采用 SHA1withDSA 算法的消息进行数字签名
SampleMarsCrypto.java 说明如何生成 Mars 机密密钥,以及如何进行 Mars 加密和解密。
SampleMessageDigests.java 说明如何使用 MD2 和 MD5 算法的消息摘要
SampleRSACrypto.java 说明如何生成 RSA 密钥对,以及如何进行 RSA 加密和解密
SampleRSASignatures.java 说明如何生成 RSA 密钥对(公用密钥和专用密钥),并使用密钥对采用 SHA1withRSA 算法的消息进行数字签名
SampleX509Verification.java 说明如何验证 X509 证书

文档

有关 JCE 的文档,请参阅“安全性:学习资源”主题。


指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csec_jsse
文件名:csec_jsse.html