j_aub
Messages postés99Date d'inscriptionmercredi 25 août 2004StatutMembreDernière intervention 9 avril 2009
-
11 mars 2005 à 09:47
shiva426
Messages postés1Date d'inscriptionjeudi 5 juillet 2007StatutMembreDernière intervention 5 juillet 2007
-
5 juil. 2007 à 16:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Concernant notre sujet, noilà mon problème :
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.
public static void main (String[] args) throws IOException {
System.out.println(getPage(urlHost).toString());
}
public static StringBuffer getPage(String urlString)
{
public static String proxyPwd = "proxyPWD";
public static String proxyUser = "proxyUSER";
public static String proxyHost = "proxyIP";
public static int proxyPort = port_proxy;
// begin message
HEADER --->{null=[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]}
// End message
Sou unix/linx j'ai executer la command wget voilà le résultat :
// begin execute command in unix/linux
root@becane:~#wget X.X.X.X 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 `X.X.X.X' 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
// End execute command in unix/linux
Apparament j'ai un problème de certificat !
Comment utiliser le certificat du serveur https dans le code client java ?
Et comment fait on pour l'obtenir ?
Est ce que quelqu'un peut m'expliquer comment résoudre le problème est établir une connexion https ?
Des exemples de code sa serai sympa.
Merci d'avance
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 4 déc. 2006 à 14:06
cs_demo2000
Messages postés8Date d'inscriptionmercredi 13 septembre 2006StatutMembreDernière intervention 5 décembre 2006 4 déc. 2006 à 12:25
Merci pour le code.
Est ce qu'il n y a pas un exemple de code qui illustre comment un client java se connecte a un server HTTPS via le proxy ?
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 1 avril 2005 à 01:22
C'est simplement que tu dosi avoir un serveur qui écoute déjà sur ce port ... utilises-tu un autre serveur HTTP sur ta machine ???
@+
jjtch
Messages postés1Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention31 mars 2005 31 mars 2005 à 17:13
J'ai recu l'erreur suivante quand j'ai lance le HTTPSServer:
Server HTTPS started ...
java.net.BindException: Permission denied
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.(ServerSocket.java:185)
at java.net.ServerSocket.(ServerSocket.java:141)
at javax.net.ssl.SSLServerSocket.(SSLServerSocket.java:84)
at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.(SSLServerSocketImpl.java:79)
at com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl.createServerSocket(SSLServerSocketFactoryImpl.java:57)
at HTTPSServer.getServerSocket(HTTPSServer.java:46)
at HTTPSServer.run(HTTPSServer.java:22)
at HTTPSServer$1.run(HTTPSServer.java:57)
Est ce que quelqu'un peut me donner la solution pur ce problem ?
Jean-Jacques.
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 30 mars 2005 à 19:07
C'était une idée que j'avais à la base, mais un développeur se devra de lire la javadoc de la classe SSLSocket, et verra très vite qu'il suffit de mettre la méthode setNeedClientAuth() à true pour obliger un client à envoyer son certificat. La réalisation du client (SSLSocket) suivant exactement le même processus de création (certificat inclut) que le serveur ce n'est pas bien compliqué, d'autant que la source porte bien le nom de serveur HTTP/HTTPS ! Pour comparer quand tu installes Apache tu ne demandes pas un explorateur avec ??? Ici c'est pareille ...
javadan
Messages postés1Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention27 mars 2005 27 mars 2005 à 11:07
Il aurait été intéressant de montrer un exemple d'un client HTTP SSL qui envoie lui aussi son certificat.
5 juil. 2007 à 16:30
4 déc. 2006 à 15:21
Concernant notre sujet, noilà mon problème :
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 :
// Begin code
package sslproject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URL;
import javax.net.ssl.*;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
public class HtpsConnection {
public static String urlHost ="https://X.X.X.X:443/PathServle";
public static void main (String[] args) throws IOException {
System.out.println(getPage(urlHost).toString());
}
public static StringBuffer getPage(String urlString)
{
public static String proxyPwd = "proxyPWD";
public static String proxyUser = "proxyUSER";
public static String proxyHost = "proxyIP";
public static int proxyPort = port_proxy;
System.getProperties().put("javax.net.debug", "ssl" );
System.getProperties().put("https.proxySet", "true");
System.getProperties().put("https.proxyHost", proxyHost);
System.getProperties().put("https.proxyPort", proxyPort);
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public boolean checkClientTrusted(java.security.cert.X509Certificate[] chain){
return true;
}
public boolean isServerTrusted(java.security.cert.X509Certificate[] chain){
return true;
}
public boolean isClientTrusted(java.security.cert.X509Certificate[] chain){
return true;
}
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {}
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {}
}
};
try
{
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
catch(NoSuchAlgorithmException nsae)
{}
catch(KeyManagementException kme)
{
kme.printStackTrace();
}
try
{
HttpsURLConnection connec = null;
URL url = new URL(urlString);
connec = (HttpsURLConnection)url.openConnection();
connec.setDoInput(true);
connec.setUseCaches(false);
String authentication = proxyUser + ":" + proxyPwd;
String encodedPassword = "Basic " + new sun.misc.BASE64Encoder().encode(authentication.getBytes());
connec.setRequestProperty("Proxy-Authorization", encodedPassword);
//connec.setRequestProperty("X-TestHeader", "value");
connec.setRequestMethod("POST");
connec.setDoOutput(true);
String msg;
msg= "---"+"\r\n";
int statusCode = connec.getResponseCode();
//System.err.println("Certificats --->"+connec.getServerCertificates());
System.err.println("HEADER --->"+connec.getHeaderFields());
StringBuffer pageContents = new StringBuffer();
if(statusCode==HttpsURLConnection.HTTP_OK)
{
System.err.println("Connected ...!");
BufferedReader in = new BufferedReader(new InputStreamReader(connec.getInputStream()));
PrintWriter out = new PrintWriter(connec.getOutputStream(), true );
out.println(msg);
String curLine = in.readLine();
while(curLine!=null)
{
pageContents.append(curLine);
curLine = in.readLine();
}
}
return pageContents;
}
catch(MalformedURLException mue)
{
mue.printStackTrace();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
return null;
}
}
// End code
a l'execution j'ai un message :
// begin message
HEADER --->{null=[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]}
// End message
Sou unix/linx j'ai executer la command wget voilà le résultat :
// begin execute command in unix/linux
root@becane:~#wget X.X.X.X 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 `X.X.X.X' 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
// End execute command in unix/linux
Apparament j'ai un problème de certificat !
Comment utiliser le certificat du serveur https dans le code client java ?
Et comment fait on pour l'obtenir ?
Est ce que quelqu'un peut m'expliquer comment résoudre le problème est établir une connexion https ?
Des exemples de code sa serai sympa.
Merci d'avance
4 déc. 2006 à 14:06
++
4 déc. 2006 à 12:25
Est ce qu'il n y a pas un exemple de code qui illustre comment un client java se connecte a un server HTTPS via le proxy ?
1 avril 2005 à 01:22
@+
31 mars 2005 à 17:13
Server HTTPS started ...
java.net.BindException: Permission denied
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.(ServerSocket.java:185)
at java.net.ServerSocket.(ServerSocket.java:141)
at javax.net.ssl.SSLServerSocket.(SSLServerSocket.java:84)
at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.(SSLServerSocketImpl.java:79)
at com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl.createServerSocket(SSLServerSocketFactoryImpl.java:57)
at HTTPSServer.getServerSocket(HTTPSServer.java:46)
at HTTPSServer.run(HTTPSServer.java:22)
at HTTPSServer$1.run(HTTPSServer.java:57)
Est ce que quelqu'un peut me donner la solution pur ce problem ?
Jean-Jacques.
30 mars 2005 à 19:07
27 mars 2005 à 11:07