⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sslsocketclientwithclientauth.java

📁 java安全
💻 JAVA
字号:
/* * @(#)SSLSocketClientWithClientAuth.java	1.3 00/06/21 * * Copyright 1995-1998,2000 by Sun Microsystems, Inc., * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. * All rights reserved. * * This software is the confidential and proprietary information * of Sun Microsystems, Inc. ("Confidential Information").  You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Sun. */import java.net.*;import java.io.*;import javax.net.ssl.*;import javax.security.cert.X509Certificate;import com.sun.net.ssl.*;import java.security.KeyStore;/* * This example shows how to set up a key manager to do client * authentication if required by server. * * This program assumes that the client is not inside a firewall. * The application can be modified to connect to a server outside * the firewall by following SSLSocketClientWithTunneling.java. */public class SSLSocketClientWithClientAuth {    public static void main(String[] args) throws Exception {	String host = null;	int port = -1;	String path = null;	for (int i = 0; i < args.length; i++)	    System.out.println(args[i]);	if (args.length < 3) {	    System.out.println(		"USAGE: java SSLSocketClientWithClientAuth " +		"host port requestedfilepath");	    System.exit(-1);	}	try {	    host = args[0];	    port = Integer.parseInt(args[1]);	    path = args[2];	} catch (IllegalArgumentException e) {	     System.out.println("USAGE: java SSLSocketClientWithClientAuth " +		 "host port requestedfilepath");	     System.exit(-1);	}	try {	    /*	     * Set up a key manager for client authentication	     * if asked by the server.  Use the implementation's	     * default TrustStore and secureRandom routines.	     */	    SSLSocketFactory factory = null;	    try {		SSLContext ctx;		KeyManagerFactory kmf;		KeyStore ks;		char[] passphrase = "passphrase".toCharArray();		ctx = SSLContext.getInstance("TLS");		kmf = KeyManagerFactory.getInstance("SunX509");		ks = KeyStore.getInstance("JKS");		ks.load(new FileInputStream("testkeys"), passphrase);		kmf.init(ks, passphrase);		ctx.init(kmf.getKeyManagers(), null, null);		factory = ctx.getSocketFactory();	    } catch (Exception e) {		throw new IOException(e.getMessage());	    }	    SSLSocket socket = (SSLSocket)factory.createSocket(host, port);	    /*	     * send http request	     *	     * See SSLSocketClient.java for more information about why	     * there is a forced handshake here when using PrintWriters.	     */	    socket.startHandshake();	    PrintWriter out = new PrintWriter(				  new BufferedWriter(				  new OutputStreamWriter(     				  socket.getOutputStream())));	    out.println("GET " + path + " HTTP/1.1");	    out.println();	    out.flush();	    /*	     * Make sure there were no surprises	     */	    if (out.checkError())		System.out.println(		    "SSLSocketClient: java.io.PrintWriter error");	    /* read response */	    BufferedReader in = new BufferedReader(				    new InputStreamReader(				    socket.getInputStream()));	    String inputLine;	    while ((inputLine = in.readLine()) != null)		System.out.println(inputLine);	    in.close();	    out.close();	    socket.close();	} catch (Exception e) {	    e.printStackTrace();	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -