|
用 Java 2 标准版本 (J2SE) 1.4 进行 Internet 安全编程(3) JSSE 编程 JSSE API 提供了扩充的网络套接字类、信用和密匙管理,以及为简化套接字创建而设计的套接字工厂框架,以此扩充 Java.security 和 Java.net 两个包。这些类都包含在 Javax.net 和 Javax.net.ssl 包中。 SSLSocket 和 SSLServerSocket
Javax.net.ssl.SSLSocket 是 Java.net.Socket 的子类,因此他支持所有标准 Socket 的方法,和一些为安全套接字新增加的方法。Javax.net.ssl.SSLServerSocket 类与 SSLSocket 类相似,只是它用于创建服务器套接子,而 SSLSocket 不是。 创建一个 SSLSocket 实例有如何两种方法: - 用 SSLSocketFactory 实例执行 createSocket 方法来创建。
- 通过 SSLServerSocket 的 accept 方法获得。
SSLSocketFactory 和 SSLServerSocketFactory
Javax.net.ssl.SSLSocketFactory 类是用于创建安全套接字的对象工厂。Javax.net.ssl.SSLServerSocketFactory 也是这样的工厂,但它用于创建安全的服务器套接字。 可以通过如下方法获得 SSLSocketFactory 实例: - 执行 SSLSocketFactory.getDefault 方法获得一个默认的工厂。
- 通过特定的配置行为构造一个新的工厂。
注意默认的工厂的配置只允许服务器验证。 使现有的 Client/Server 应用变得安全在现有的 C/S 应用中整合 SSL 以使其变得安全比较简单,使用几行 JSSE 代码就可以做到。为了使服务器变得安全,下面的例子中加黑显示的内容是必须的: import Java.io.*;import Javax.net.ssl.*;public class Server { int port = portNumber; SSLServerSocket server; try {SSLServerSocketFactory factory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();server = (SSLServerSocket) factory.createServerSocket(portNumber);SSLSocket client = (SSLSocket) server.accept();// Create input and output streams as usual// send secure messages to client through the // output stream// receive secure messages from client through // the input stream } catch(Exception e) { }}
为了使客户端变得安全,下面的例子中加黑显示的内容是必须的: import Java.io.*;import Javax.net.ssl.*;public class Client { ... try {SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();server = (SSLServerSocket) factory.createServerSocket(portNumber);SSLSocket client = (SSLSOcket) factory.createSocket(serverHost, port);// Create input and output streams as usual// send secure messages to server through the // output stream receive secure// messages from server through the input stream } catch(Exception e) { }}
|