使用 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 | 来自 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 目录。
应用程序编程接口
- 套接字和 SSL 套接字
- 创建套接字和 SSL 套接字的工厂
- 充当安全套接字工厂的安全套接字上下文
- 密钥和信任管理器接口
- 安全 HTTP URL 连接类
- 公用密钥证书 API
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
- 版本 1.6
- 访问 Web 站点 http://www.ibm.com/developerworks/java/jdk/security/。
- 单击 Java 1.6。
- 单击“Java 安全套接字扩展 (JSSE) 指南”部分中的 Javadoc HTML 文档。
使用 Java 安全套接字扩展的样本
- 版本 1.6
- 访问 Web 站点 http://www.ibm.com/developerworks/java/jdk/security/。
- 单击 Java 1.6。
- 单击“Java 安全套接字扩展 (JSSE) 指南”部分中的 jssedocs_samples.zip。
文件 | 描述 |
---|---|
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。
如果安装了 JSSE 的调试版本,那么 true 值将打开跟踪工具。
true 值打开跟踪工具。使用管理控制台为调试应用程序服务器设置系统属性。
文档
有关 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)
应用程序编程接口
- 对称批量加密,如 DES、RC2 和 IDEA
- 对称流加密,如 RC4
- 非对称加密,如 RSA
- 基于密码的加密 (RBE)
- 密钥协议
- 消息认证码
在 Web 站点 http://www.ibm.com/developerworks/java/jdk/security/ 上提供了有关 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 的文档,请参阅“安全性:学习资源”主题。