Communication Client Java avec une Servlet via HTTPS / SSL

Communication Client Java avec une Servlet via HTTPS / SSL - Java - Programmation

Marsh Posté le 03-12-2006 à 13:52:07    

Je suis entrain de developper un client java qui se connecte a une servlet (web service) en HTTPS / SSL, mon application passe par le proxy.
 
Voilà le code :
 

Code :
  1. package sslproject;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;
  6. import java.net.MalformedURLException;
  7. import java.net.URL;
  8. import javax.net.ssl.*;
  9. import java.security.KeyManagementException;
  10. import java.security.NoSuchAlgorithmException;
  11. public class HtpsConnection {
  12. public static String urlHost ="https://mon_site:443/mon_servlet";
  13. public static void main (String[] args) throws IOException {
  14.  System.out.println(getPage(urlHost).toString());
  15. }
  16. public static StringBuffer getPage(String urlString)
  17. {
  18.     public static String  proxyPwd = "proxyPWD";
  19. public static String proxyUser = "proxyUSER";
  20. public static String proxyHost = "proxyIP";
  21. public static int    proxyPort = port_proxy;
  22.        
  23.         System.getProperties().put("javax.net.debug", "ssl" );
  24. System.getProperties().put("https.proxySet", "true" );
  25.         System.getProperties().put("https.proxyHost", proxyHost);
  26.         System.getProperties().put("https.proxyPort", proxyPort);
  27.        
  28.        
  29.         TrustManager[] trustAllCerts = new TrustManager[]{
  30.   new X509TrustManager() {
  31.   public boolean checkClientTrusted(java.security.cert.X509Certificate[] chain){
  32.   return true;
  33.   }
  34.   public boolean isServerTrusted(java.security.cert.X509Certificate[] chain){
  35.   return true;
  36.   }
  37.   public boolean isClientTrusted(java.security.cert.X509Certificate[] chain){
  38.   return true;
  39.   }
  40.   public java.security.cert.X509Certificate[] getAcceptedIssuers() {
  41.   return null;
  42.   }
  43.   public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {}
  44.   public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {}
  45.   }
  46.  };
  47.         try
  48.         {
  49.         SSLContext sc = SSLContext.getInstance("SSL" );
  50.         sc.init(null, trustAllCerts, null);
  51.         HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
  52.         }
  53.         catch(NoSuchAlgorithmException nsae)
  54.         {}
  55.         catch(KeyManagementException kme)
  56.         {
  57.          kme.printStackTrace();
  58.         }
  59.        
  60.         try
  61.  {
  62.   HttpsURLConnection connec = null;
  63.   URL url = new URL(urlString);
  64.   connec = (HttpsURLConnection)url.openConnection();
  65.   connec.setDoInput(true);
  66.             connec.setUseCaches(false);
  67.            
  68.             String authentication = proxyUser + ":" + proxyPwd;
  69.             String encodedPassword = "Basic " + new sun.misc.BASE64Encoder().encode(authentication.getBytes());
  70.             connec.setRequestProperty("Proxy-Authorization", encodedPassword);
  71.             connec.setRequestProperty("X-TestHeader", "value" );
  72.            
  73.             connec.setRequestMethod("POST" );
  74.             connec.setDoOutput(true);
  75.             String msg;
  76.            
  77.             msg= "---"+"\r\n";
  78.          
  79.             int statusCode = connec.getResponseCode();
  80.            
  81.             //System.err.println("Certificats  --->"+connec.getServerCertificates());
  82.             System.err.println("HEADER --->"+connec.getHeaderFields());
  83.            
  84.             StringBuffer pageContents = new StringBuffer();
  85.             if(statusCode==HttpsURLConnection.HTTP_OK)
  86.             {
  87.    System.err.println("Connected ...!" );
  88.    BufferedReader in = new BufferedReader(new InputStreamReader(connec.getInputStream()));
  89.    PrintWriter out = new PrintWriter(connec.getOutputStream(), true );
  90.              out.println(msg);
  91.            
  92.    String curLine = in.readLine();
  93.     while(curLine!=null)
  94.     {
  95.     pageContents.append(curLine);
  96.     curLine = in.readLine();
  97.     }
  98.             }
  99.             return pageContents;
  100.  }
  101.  catch(MalformedURLException mue)
  102.  {
  103.   mue.printStackTrace();
  104.  }
  105.  catch(IOException ioe)
  106.  {
  107.   ioe.printStackTrace();
  108.  }
  109.  return null;
  110. }
  111. }


 
Voilà sa réponse :

Citation :


{[HTTP/1.1 500 Internal Server Error], Content-Length=[101], Connection=[Close], Date=[Fri, 01 Dec 2006 11:38:11 GMT], Content-Type=[text/html]}



 
 
Sous unix/linx j'ai executé la command wget voilà le résultat :  
 

Citation :


root@becane:~#@wget ip_server_https 443
...
Connecting to X.X.X.X:443... connected.
ERROR: Certificate verification error for X.X.X.X : unable to get local issuer certificate
ERROR: certificate common name `server_to_connect' doesn't match requested host name `X.X.X.X:443'.
To connect to X.X.X.X:443 insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.
--17:19:09-- http://443/
=> `index.html.1'
Resolving 443... 0.0.1.187
Connecting to 443|0.0.1.187|:80... failed: Invalid argument.
FINISHED --17:19:09--
Downloaded: 0 bytes in 0 files


 
Comment faire pour établir une connexion avec le servlet en HTTPS ?  
 
Une documentation, un lien ... je suis preneur !
 
Merci


Message édité par demo2000 le 03-12-2006 à 14:06:17
Reply

Marsh Posté le 03-12-2006 à 13:52:07   

Reply

Marsh Posté le 08-12-2006 à 00:22:34    

T'as surtout un problème du côté du serveur https là non, pas forecement du côté du java.

Reply

Marsh Posté le 08-12-2006 à 18:28:39    

Ricco a écrit :

T'as surtout un problème du côté du serveur https là non, pas forecement du côté du java.


 
peut tu s.v.p expliquer ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed