2002 年 6 月 第13卷 第3期 装 备 指 挥 技 术 学 院 学 报 Journal of the A cademy of Equipment Command & Technology June 2002 Vol. 13 No13  收稿日期: 200111213  作者简介: 林 琪(1974- ) , 女, 讲师, 硕士 . 使用 Java 安全 Socket 扩展包(JSSE)实现 SSL 林 琪 (装备指挥技术学院 电子工程系, 北京 101416) 卢 昱 (装备指挥技术学院 科研部, 北京 101416)   摘   要: SSL 是安全应用中一个非常重要的协议, 而Java 则是一种实现网络应用的先进工具。为了在Java 安全 Socket 扩展包基础上实现 SSL , 首先介绍了SSL 和 JSSE 的基本内容。在对密钥库与信任库进行分析的基础上, 介绍了使用JSSE 实现SSL 客户与服务器Socket 的方法, 并给出了具体实例。针对具体需求强调了基于U RL 的客户设计有关问题。最后介绍了JSSE 的调试方法。 关 键 词: Java 安全 Socket 扩展包; Java; 安全 Socket 层; 安全 中图分类号: TP 393. 08 文献标识码: A     文 章 编 号: CN 1123987gG3(2002) 030062205  安全 Socket 层(SSL: Secure Socket L ayer) 提供了在 TCP Socket 上对数据进行加密的方法, 它也是HTTPS 协议的基础。利用Java 安全 Socket 扩 展 包 ( JSSE: Java Secure Socket Extension) 可以象处理协议一样创建和使用 SSL Socket, 从而支持 HTTPS 协议。由于它与 TCP Socket 有着很紧密的关系, 因此 SSL 本身并不是一个通用的加密引擎, 但却是 Internet 上最常用的一种加密方式。作为基于网络的加密方法, 在设计方面具有许多优点。 1 SSL 与 JSSE 概述 在 Internet 上, 数据加密通常会利用安全Socket 层协议实现, 其最通常的版本是 SSL 3. 0。随着 SSL 成为 Internet 上的一个关键技术, 其开发和维护也逐渐由 Internet 工程任务组( IETF) 接手, 并建立了传输层安全 (TL S: T ransport L ayer Security) Internet 标准。SSL 和 TL S 从本质上讲是同一个协议, TL S 1. 0 可以理解为 SSL 3. 1 (即对 3. 0 有些修改)。TL S 1. 0 能与 SSL 3. 0 向前兼容, 因此使用 TL S 协议的程序也可以与其它使用 SSL 3. 0 的程序通信[1, 2]。 JSSE 为 SSL Socket 定义了A P I 接口。Sun 在JSSE 中提供了此A P I的默认实现。SSL 设计 的初衷是为了在 Socket 上使用。在此协议内部没有将数据的加密和传输区别开。如果使用 SSL 就必须用 TCP Socket 来传输数据: 首先是通用性, 还为秘密密钥加密提供了一个简单接口, 另外所适用的环境中通常只需较少的服务器。SSL 信息流基本如下: 首先客户启动到服务器的联接, 并向服务器通知客户所支持的SSL 密码。服务器对此响应, 并返回服务器所支持的 SSL 密码, 接下来服务器向客户发送一个证书以验证其身份,