pessoal
Peguei dicas pelos foruns javas e cheguei a esse codigo (eh auto-condido, dah para compilar no [color=red]JAVA 1.3[/color] que eh meu objetivo).
Ja tentei varias coisas que vi no GUJ e em outros foruns, mas ate agora nao consegui resolver.
No entando ao rodar recebo a seguinte mensagem de erro:
Unable to tunnel through MY_PROXY_ADDRESS:8080. Proxy returns "HTTP/1.1 407 Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy service is denied. )"
package ssltest;
import java.io.*;
import java.net.*;
import java.security.cert.X509Certificate;
import com.sun.net.ssl.SSLContext;
import com.sun.net.ssl.TrustManager;
import com.sun.net.ssl.X509TrustManager;
import com.sun.net.ssl.internal.www.protocol.https.BASE64Encoder;
import com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnection;
/**
*
* @author pen_fold
*/
public class SSLTest {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
SSLTest objSSLTest = new SSLTest();
if (args.length > 0)
objSSLTest.testConnection(args[0]);
else
//objSSLTest.testConnection("https://www.verisign.com");
objSSLTest.testConnection("https://www.sun.com");
}
private void testConnection(String strUrl) {
String strProxyUsername = "MY_DOMAIN\\MY_USER";
String strProxyPassword = "MY_PASSWORD";
String strProxyHost = "MY_PROXY_ADDRESS";
String strProxyPort = "8080";
//set up system properties to indicate we are using a proxy
System.setProperty("https.proxyHost", strProxyHost);
System.setProperty("https.proxyPort", strProxyPort);
System.setProperty("proxyHost", strProxyHost);
System.setProperty("proxyPort", strProxyPort);
System.setProperty("proxySet", "true");
System.setProperty("http.proxyHost", strProxyHost);
System.setProperty("http.proxyPort", strProxyPort);
System.setProperty("http.proxySet", "true");
String strUserpass = strProxyUsername + ":" + strProxyPassword;
System.setProperty ("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol") ; //add https protocol handler
java.security.Security.addProvider ( new com.sun.net.ssl.internal.ssl.Provider( )) ; //dynamic registration of SunJSSE provider
TrustManager[] arrTrustAllCerts = new TrustManager[] {
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {}
public boolean isClientTrusted(X509Certificate[] arg0) {
// TODO Auto-generated method stub
return true;
}
public boolean isServerTrusted(X509Certificate[] arg0) {
// TODO Auto-generated method stub
return true;
}
}
};
SSLContext objSSLContext;
try {
objSSLContext = SSLContext.getInstance("SSL");
objSSLContext.init(null, arrTrustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(objSSLContext.getSocketFactory());
//URLConnection con = url.openConnection();
String encodedLogin = new BASE64Encoder().encode(strUserpass.getBytes());
URL objUrl = new URL(strUrl);
HttpURLConnection objConnection = (HttpURLConnection) objUrl.openConnection();
objConnection.setDoOutput(true);
objConnection.setRequestProperty("Proxy-Authorization", "Basic " + encodedLogin);
objConnection.connect();
BufferedReader objBufferReader = new BufferedReader(new InputStreamReader(objConnection.getInputStream()));
String strResponse = objBufferReader.readLine();
if (strResponse != null)
strResponse = strResponse.trim();
objConnection.disconnect();
}catch(UnknownHostException UHex)
{
System.out.println("UnknownHostException: " + UHex.getMessage());
}catch(Exception ex)
{
System.out.println("Error: " + ex.getMessage());
}
}
}
Inicialmente meu problema era com SSL (no Java 1.3), mas agora estou com esse problema para testar, pois aqui na empresa estamos atras de um proxy Microsoft.
Se alguem puder ajudar ficarei agradecido.
Abracos