客戶端
java 安全套接擴展 (Java Secure Socket Extension, JSSE) 使 Internet 安全通信成為現實。它是 SSL 3.0 (Secure Socket Layer) 及 TLS 1.0 (Transport Layer Security,由 SSL 3.0 改善而來) 的框架和實現。這個包讓 Java 開發人員能夠開發安全的網絡應用;為基于 TCP/ip 的何應用協議,如 HTTP、FTP、Telnet、或者 NTTP,在客戶端和服務器端之間建立安全的數據通道。
在這篇文章的第一部分 (服務器端),作者已經具體說明了 SSL 和 JSSE,并且說明了如何開發服務器端支持 SSL 應用程序。那一部分中我們開發了一個 HTTPS 服務器,這是一個非常有用的應用程序,在這一部分中同樣會用到它。
在這篇文章涉及到客戶端的內容,它首先簡述 JSSE,然后會做這樣一些事情
l在客戶端使用 JSSE API
l一步步的開發一個支持 SSL 的客戶端應用程序
l開發簡單的支持 SSL 的客戶端應用程序
l從服務器端導出證書并在客戶端導入
l開發一個支持 SSL 的網頁瀏覽器
JSSEJava 安全套接擴展 (JSSE) 提供了 SSL 和 TLS 協議的框架及實現。JSSE 將復雜的、根本的加密算法抽象化了,這樣就降低了受到敏感或者危險的安全性攻擊的風險。正如你在本文中看到的那樣,由于它能將 SSL 無縫地結合在應用當然,使安全應用的開發變得非常簡單。JSSE 框架可以支撐許多不同的安全通信協議,如 SSL 2.0 和 3.0 以及 TLS 1.0,但是 J2SE v1.4 只實現了 SSL 3.0 和 TLS 1.0。
用 JSSE 編寫客戶端應用程序
JSSE API 提供了擴充的網絡套接字類、信用和密匙治理,以及為簡化套接字創建而設計的套接字工廠框架,以此擴充 java.security 和 java.net 兩個包。這些類都包含在 javax.net 和 javax.net.ssl 包中。
javax.net.sll.SSLSocketFactory 類是一個創建安全套接字的對象工廠。可以通過下面兩種方法獲得 SSLSocketFactory 的實例:
1、調用 SSLSocketFactory.getDefault 來獲得默認的工廠。默認的工廠被配置為只答應服務器端驗證 (不答應客戶端驗證)。注重許多電子商務網站不需要客戶端驗證。
2、使用指定的配置來構造一個新的工廠 (這不在本文講述的范圍內)。
建立 SSLSocketFactory 實例之后,你就可以通過 SSLSocketFactory 實例的 createSocket 方法創建 SSLSocket 對象了。這里有一個例子,該例通過 SSL 端口 443 (這是 HTTPS 的默認端口) 創建套接字并連接到 Sun 的 WWW 服務器。
// Get a Socket factory
SocketFactory factory = SSLSocketFactory.getDefault();
// Get Socket from factory
Socket socket = factory.createSocket("www.sun.com", 443);
使用低層的 SSL 套接字
現在,讓我們看一個使用低層套接字在 HTTPS 服務器上打開一個 SSL 套接字連接的完整例子。在這個例子中,打開了一個到 HTTPS 服務器的 SSL 套接字連接,并且讀入默認文檔的內容。示例代碼 1 展示了這個應用程序,其中用于打開 SSL 套接字的代碼已經加黑顯示了。你將會看到,應用程序中其余代碼就是常規的輸入/輸出流代碼。
代碼示例 1:ReadHttpsURL1
import java.net.*;
import javax.net.*;
import javax.net.ssl.*;
public class ReadHttpsURL1 {
static final int HTTPS_PORT = 443;
public static void main(String argv[]) throws Exception {
if (argv.length != 1) {
新聞熱點
疑難解答