WebSphere 中的 SSL/TLS:用法、配置和性能

 

1. 简介

SSL(安全套接字层)和 TLS(传输层安全性)提供了客户机与服务器之间的安全连接。SSL 协议最初由 Netscape 开发;TLS 协议以 SSL 为基础并由 RFC 2246 定义。本文中的术语“SSL”既指 SSL 协议,也指 TLS 协议。

SSL 协议运行于 TCP/IP 之上和高层协议(如 HTTP、IIOP 和 LDAP)之下,因此它可以为高层协议数据提供机密性。安全连接所提供的信任、机密性和性能的级别各有不同,并且都取决于客户机和服务器的 SSL 配置。因此,要正确地配置客户机和/或服务器,并因此而达到期望的信任、机密性和性能的级别,理解 SSL 的基本操作和用法就很重要。

本文讨论了 IBM ® WebSphere ® Application Server 4.0 高级版和高级单服务器版软件的 SSL 用法。文章还提供了配置 SSL 的指南,并讨论了安全性和性能问题。有关使用 WebSphere 管理界面配置 SSL 的更详细信息,请查阅 WebSphere 4.0 信息中心“Configuring SSL in WebSphere Application Server”一节。有关高级版的内容,请参阅 http://www.ibm.com/software/webservers/appserv/doc/v40/ae/infocenter/was/06061801a07.html;有关高级单服务器版的内容,请参阅 http://www.ibm.com/software/webservers/appserv/doc/v40/aes/infocenter/was/06061801a07.html。

2. 术语

  • 证书
    证书是用来认证实体(如用户或服务器)的信息集合。证书通常由以下信息组成:
    • 被认证实体(例如一台服务器)的公钥
    • 被认证实体的名称和地址,也称为 DN(专有名称)
    • 证书发放者(例如认证中心)的 DN
    • 证书发放者的数字签名
    • 发放日期
    • 失效日期
  • 认证中心
    发放证书的可信任的第三方,也称为 CA。
  • 密码组
    用于执行各种安全性操作的密码算法集合。每个 SSL 连接使用一个密码组。
  • 密码硬件设备
    执行某些密码功能(如密钥的加密/解密和/或存储/检索)的硬件设备。请参阅附录 C 中受支持的密码硬件清单。
  • GSKit
    由 WebSphere Webserver 插件和 IHS(IBM HTTP Server)使用的 IBM 的 SSL 的 C/C++ 实现。
  • HTTPS
    SSL 之上的 HTTP。
  • IIOPS
    SSL 之上的 IIOP。
  • JKS
    Java 密钥存储(Java Key Store)。一种 Java 特定的密钥文件格式。
  • JSSE
    Java 安全套接字扩展。
  • 密钥文件
    包含个人和/或签名者证书的文件。
  • 密钥对
    公钥和对应的私钥。如果用公钥对数据进行了加密,那么只能用对应的私钥解密。反之,如果用私钥对数据进行了加密,那么只能用对应的公钥解密。
  • LDAPS
    SSL 之上的 LDAP。
  • 个人证书
    证书加上关联的私钥。
  • PKCS12
    PKCS 表示“公钥密码术标准”。PKCS12 是标准密钥文件格式
  • 私钥
    密钥对的私有部分。
  • 公钥
    密钥对的公用部分。
  • 自签名证书
    此类证书中被认证实体的 DN 与证书发放者的 DN 相同。
  • 签名者证书
    标识可信任的 CA 的证书。例如,如果密钥文件包含 ACME 签名者证书,则意味着将信任所有具有由 ACME 签名(或发放)证书的人。
  • SSL 成批加密/解密
    完成 SSL 握手之后出现的加密/解密,以对应用程序数据进行加密和解密。
  • SSL 握手
    客户机与服务器之间建立 SSL 连接的初始信息交换。在能读或写任何应用程序数据之前,握手必须成功地完成。
  • 信任文件
    包含签名者证书的文件。它不能包含个人证书。

3. 使用的 实现

WebSphere Webserver 插件所使用的 SSL 实现是 IBM 的 GSKit。这是一个 C 实现,IBM HTTP Server 使用的是同一实现。

所有其它 WebSphere 组件(例如 WebSphere Application Server、WebSphere Admin Server 等)使用的 SSL 实现是 IBM JSSE(Java 安全套接字扩展)。这是一个纯 Java 实现。

从管理角度看,JSSE 和 GSKit 之间有几点差异值得一提。

  • JSSE 和 GSKit 都允许将签名者证书和个人证书存储在 SSL 密钥文件中;而 JSSE 还允许将一个单独文件指定为信任文件。信任文件只可以包含签名者证书。因此,您可以把所有的个人证书放在密钥文件中,把签名者证书放在信任文件中。对于下面的情况,这是必需的:
    1. 使用单独密钥文件时,在多个 SSL 配置间共享同一个信任文件。这可以简化更新可信任签名者列表时的管理工作,因为只有一个文件需要更新。
    2. 配置内存只够保存个人证书的密码硬件设备。在这种情况下,密钥文件是指硬件设备,信任文件是指磁盘上包含所有签名者证书的文件。
  • JSSE 不识别 GSKit 使用的、IBM 专有的 SSL 密钥文件格式(即 .kdb 格式);相反,JSSE 可以识别如 PKCS12 和 JKS 这样的标准文件格式。因此,SSL 密钥文件或许不能在 WebSphere 插件和其它 WebSphere 组件(例如:WebSphere Application Server)之间共享。
  • JSSE 和 GSKit 具有不同的密钥管理实用程序。两种密钥管理实用程序的 GUI 看起来非常相似,注意不要把它们混淆。JSSE 的密钥管理实用程序(称为 IKeyMan)在 UNIX 上可以用 WebSphere bin 目录中的 ikeyman.sh 脚本启动,或在 Windows 上从 WebSphere 开始菜单启动。GSKit 的密钥管理实用程序在 UNIX 上可以用 /usr/bin 目录中的 ikeyman 脚本启动,或在 Windows 上从 GSKit 安装 bin 目录(缺省为 c:Program Filesibmgsk5ingsk5ikm.exe)启动。

      

你可能感兴趣的:(java)