使用 JSSE 和 JCE 编程接口进行安全传输
您可以了解有关使用 Java™ 安全套接字扩展 (JSSE) 和 Java 密码术扩展 (JCE) 编程接口的传输安全性的更多详细信息。 在本主题中,描述了 IBM® 版本的 Java 密码术扩展联邦信息处理标准 (IBMJCEFIPS)。
Java 安全套接字扩展(Java Secure Socket Extension)
JSSE 为 WebSphere® Application Server提供传输安全性。 JSSE 为安全套接字层 (SSL) 和传输层安全性 (TLS) 协议提供应用程序编程接口 (API) 框架和 API 的实现,包括数据加密、消息完整性和认证这些功能。
JSSE API 集成到 Java 2 SDK Standard Edition (J2SDK) V 5 中。 JSSE API 的 API 包为 javax.net.ssl.*。 有关使用 JSSE API 的文档可以在以下网址处提供的 J2SE 6 API
文档中找到:http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html。
多个 JSSE 提供程序随附了 WebSphere Application Server随附的 Java 2 SDK V 5。 IBMJSSE 提供程序在先前的 WebSphere Application Server 发行版中使用。
有关新的 IBMJSSE2 提供程序的更多信息,请查看位于 IBMJSSE2 提供程序的文档。
定制 Java 安全套接字扩展
| 可定制的项 | 缺省值 | 定制方式 |
|---|---|---|
| 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 属性文件位于以下目录中:
app_server_root/java/jre/lib/security 目录。
app_server_root/properties 目录。
profile_root/properties 目录。
JSSE 的应用程序编程接口
- 套接字和 SSL 套接字
- 创建套接字和 SSL 套接字的工厂
- 充当安全套接字工厂的安全套接字上下文
- 密钥和信任管理器接口
- 安全 HTTP URL 连接类
- 公用密钥证书 API
- 版本 1.6
- 访问 http://www.ibm.com/developerworks/java/jdk/security/ Web 站点。
- 单击 Java 1.6。
- 单击 "Java 安全套接字扩展 (JSSE) 指南" 部分中的 Javadoc HTML 文档。
使用 Java 安全套接字扩展的样本
- 版本 1.6
- 访问 http://www.ibm.com/developerworks/java/jdk/security/ Web 站点。
- 单击 Java 1.6。
- 在 "Java 安全套接字扩展 (JSSE) 指南" 部分中单击 jssedocs_samples.zip 。
| Files | 描述 |
|---|---|
| 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 时添加前缀 http 或 https。 将显示从此站点返回的 HTML。 |
Java 2 安全性的许可权
- 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"
- java.security.SecurityPermission "putProviderProperty.IBMJSSE"
- java.security.SecurityPermission "insertProvider.IBMJSSE"
- java.security.SecurityPermission "putProviderProperty.SunJSSE"
- java.security.SecurityPermission "insertProvider.SunJSSE"
调试
通过 javax.net.debug 系统属性进行配置,JSSE 将提供下列动态调试跟踪:-Djavax.net.debug=true。
值 true 将打开跟踪设施,前提是安装了 JSSE 的调试版本。
值 true 将打开跟踪工具。 使用管理控制台为调试应用程序服务器设置系统属性。
JSSE 文档
有关 JSSE 的参考文档,请参阅“安全性:学习资源”主题。
JCE
Java 密码术扩展 (JCE) 为 WebSphere Application Server提供密码,密钥和散列算法。 JCE 提供了加密的框架和实现、密钥生成、密钥协议以及“消息认证码”(MAC) 算法。 对加密的支持包含对称、非对称、块和流密码。
IBMJCE
- 密码算法(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])
有关更多信息,请参阅以下 Web 站点中有关 JCE 的信息:http://www.ibm.com/developerworks/java/jdk/security/60/。
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)
JCE 的应用程序编程接口
- 对称批量加密,如 DES、RC2 和 IDEA
- 对称流加密,如 RC4
- 非对称加密,如 RSA
- 基于密码的加密 (RBE)
- 密钥协议
- 消息认证代码
在 http://www.ibm.com/developerworks/java/jdk/security/ Web 站点上记录了有关 JCE API 的更多信息。
使用 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 的文档
有关 JCE 的文档,请参阅“安全性:学习资源”主题。