Proxy http SSL

spurnelle Messages postés 1 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 19 avril 2010 - 19 avril 2010 à 12:08
shaiulud Messages postés 404 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 juillet 2014 - 22 avril 2010 à 10:02
Bonjour,

J'ai adapté un client FTP pour qu'il utilise à un proxy authentifiant.
Fin du mois, la société gérant le proxy va le modifier afin qu'il support une couche SSL avec un certificat.

Et il ne fonctionnera plus que comme cela, plus de mot de passe en clair.
J'ai donc entreprit de modifier le code afin qu'il support la couche SSL :

String connect = "CONNECT "+host+":"+port+" HTTP/1.1\r\nHost: "+host+":"+port;

socket = new Socket(proxyHost, proxyPort);

SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();
ssl_socket = (SSLSocket)factory.createSocket(socket, proxyHost, proxyPort, true);

...

// Extraction des input & outputstream
in = ssl_socket.getInputStream();
out = ssl_socket.getOutputStream();

String header = connect + " Authorization: Basic " + Base64.encode(proxyUser + ":" + proxyPass)+"\r\nProxy-Authorization: Basic " +Base64.encode(proxyUser + ":" + proxyPass)+"\r\n\r\n";

out.write(header.getBytes("UTF-8"));

Lors de l'éxécution de cette ligne, j'ai l'erreur :
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

Je ne comprend pas pourquoi, mais la question que je me pose est comment lui indiquer le fichier .cer à utiliser ?

Merci d'avance pour votre aide.

1 réponse

shaiulud Messages postés 404 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 juillet 2014 22
22 avril 2010 à 10:02
Je ne peux pas répondre à ta question de façon directe.

Mais l'implémentation que tu vas faire va ressemble un hack SSL de type "man in the middle".
C'est à dire :

Schéma du réseau :
[serveur distant] <<--> [proxy] <<--> [client final]


Ton proxy est client du serveur distant. il doit faire le hand ckeck avec le certificat du serveur.

Ton proxy est le serveur du client final qui fait le hand ckeck avec le certificat de ton proxy.

Tu dois donc du point de vue de ton client final, usurper le certificat du serveur distant. Il y aura dans tous les cas une erreur de sécurité SSL dans le client final (certificat corrompu).



L'erreur que tu as peux venir de l'utilisation de certificat "corrompu".
0
Rejoignez-nous