在 WAS 中使用 Java 安全套接字扩展(图) (5)
[ 来源:互网络 | 更新日期:2007-10-05 04:19:41 | 浏览次数:9355]
简介:对于大多数情况,这样的配置就足够了。极少的情况下,您可能需要不只一个单独的缺省信任库/密钥库。随后,您将会看到如何程序化地将您的信任库和密钥库指定到 JSSE 运行时中,以及如何在您的应用程序中使用多重信任库及密钥库。
这时,您的密钥库中包含了您的私有密钥及您的公钥证书。突出显示您的密钥库文件名,然后选择 View/Edit。您应该看到图 3 所示的内容。

您可以使用 iKeyman 来创建新的自签名证书,如我们刚才所示,或是向您的信任库中添加 CA 证书。而在此处我们不对其进行讨论,如果您希望使用 iKeyman 来向密钥库中添加新的证书,那么请记住,iKeyman 可以从二进制 DER 格式的文件中或从 base64 ARM 格式的文件中导入证书。(DER 代表 Distinguished Encoding Rules,它是数据编码的标准,并且 ARM 是 ASCII-armored-64 格式。)
当通过 URL 公布目标应用程序时如何使用 SSL ?
接下来,我们将要显示如何使用 JSSE 在 HTTP 上连接远程服务器的简单实例。在此实例中,我们假设现有的信任库中已经包含了所需的证书信息。接下来的步骤概括了必要的操作,它们使得 WebSphere Application Server 服务器端代码能够充当另一个远程服务器的 HTTP 客户端。
配置 JSSE 和 HTTP 所需的 JVM 属性
通过 JVM 配置,添加 com.ibm.net.ssl.internal.www.protocol 作为 Java 协议处理程序。缺省情况下,没有设置任何处理程序,所以这一步骤是必需的。最好将其定义为您的 JVM 属性的一部分,而不是在您的应用程序中对它进行硬编码。按照与定义密钥库/信任库属性相同的说明并且添加该属性: java.protocol.handler.pkgs,及其值:com.ibm.net.ssl.internal.www.protocol。该属性表明我们将 IBM HTTP 包用于 JSSE 框架。
如先前描述的那样使用 JVM 定制属性来定义您的信任库以及密钥库。由于缺省情况下 SSL 协议认证客户端的服务器,所以您可能仅需要已定义的信任库。认证到服务器的客户端是可选择的并且由服务器端的设置来控制(请见参考资料)。然而,客户端应用程序需要指定其密钥库,如同我们描述的那样。
在 WebSphere Application Server 环境下运行的客户端也许会选择使用 WebSphere Application Server 服务器密钥库。可是,我们不推荐这样做,因为这样一来,客户端就充当应用程序服务器的身份。如果您关心非法访问 WebSphere Application Server 密钥库的应用程序代码,那么您可以启用 Java 2 安全。一旦它被启用,在没有明确授权许可的情况下 WebSphere Application Server 将不允许应用程序访问密钥库(事实上是无法访问任何文件)。
编写使用 HTTPS 的代码
使用 HTTP 的 JSSE 程序 API 是非常简单的。本质上,从代码中显式地使用 JSSE,该代码打开了指向 HTTPS 的 URL。下几行演示了将 URL 创建到 HTTP 端点以及打开 HTTP 的连接。务必要恰当地处理任何可应用的异常(参考 Java 网络程序程序设计参考资料)。
String stringURL =
"https://targetHost:9443/MyWebApps/servlet/myServlet";
URL url = new URL(stringURL);
HttpsURLConnection urlc =(HttpsURLConnection)url.openConnection();
现在您可以按照正常的编程模型来编写您应用程序的其他内容。例如,现在您可以从该 URL 连接中读取。
这些简单的行中隐藏了大量的复杂内容。当第一次使用 URL 连接时,SSL 握手将自动地发生,通过客户端接收服务器证书并且对照信任库验证证书的方法来认证客户端的服务器。同理,如果合适的密钥库是可用的并且服务器请求它


您的位置:
