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 使用的 SSL 实现
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 还允许将一个单独文件指定为信任文件。信任文件只可以包含签名者证书。因此,您可以把所有的个人证书放在密钥文件中,把签名者证书放在信任文件中。对于下面的情况,这是必需的:
使用单独密钥文件时,在多个 SSL 配置间共享同一个信任文件。这可以简化更新可信任签名者列表时的管理工作,因为只有一个文件需要更新。
配置内存只够保存个人证书的密码硬件设备。在这种情况下,密钥文件是指硬件设备,信任文件是指磁盘上包含所有签名者证书的文件。
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 Files\ibm\gsk5\bin\gsk5ikm.exe)启动。