J'ai déjà un serveur proxy HTTP de travail pouvant gérer plusieurs requêtes HTTP. Maintenant, mon problème est comment puis-je gérer la demande HTTPS?
Voici un code simplifié que j'utilise: p> et la clientHandler p> } p> < p> J'ai vraiment essayé d'essayer de chercher comment, j'ai rencontré le tunneling SSL, le certificat, la porte de main, le SSLSocket, SSLFactory, TrustTore et etc. quelque chose comme ça, mais ne pouvait toujours pas le faire fonctionner. Je dois juste savoir quelles sont les choses dont j'ai besoin et les étapes pour établir une connexion à un serveur Web activé par SSL. P> p>
3 Réponses :
Google "Server HTTPS en Java" et vous pouvez trouver un tutoriel pertinent ,
Bien que les liens puissent être intéressants pour une personne qui doit utiliser SSL à Java, c'est hors sujet ici. L'OP demande à un proxy HTTP pouvant gérer les demandes HTTPS: dans ce cas, le proxy lui-même n'a pas besoin de savoir quoi que ce soit sur le SSL du tout.
Cette question se présente pour cette recherche.
Je l'ai enfin compris.
Je n'ai besoin que d'utiliser une prise normale et d'envoyer un message au client qu'une connexion est établie. Ensuite, passez au tunneling. p>
Voici un code de travail: P>
private Socket socket = null; private Socket remoteSocket = null; private HTTPReqHeader request = null; ClientHandler(Socket socket) { this.socket = socket; request = new HTTPReqHeader(); request.parse(socket); // I read and parse the HTTP request here } public void run() { remoteSocket = new Socket(request.url,request.port); if(request.isSecure() ) { // send ok message to client String ConnectResponse = "HTTP/1.0 200 Connection established\n" + "Proxy-agent: ProxyServer/1.0\n" + "\r\n"; try { DataOutputStream out = new DataOutputStream(socket.getOutputStream()); out.writeByte(ConnectResponse); out.flush(); } catch(Exception e) {} } // start connecting remoteSocket and clientSocket ........... }
Le terminateur de ligne dans HTTP est défini comme \ r \ n, pas \ n.
Où est-ce que la classe httpreqheader code> vient? En outre,
out.writebyte (ConnectResponse) code> ne fonctionne probablement pas car vous écrivez une chaîne, pas un octet. Veuillez mettre à jour votre réponse pour afficher un code de travail, idéalement un SSCCE , mentionnant également les dépendances externes (bibliothèques).
Veuillez trouver ci-dessous le code Java pour créer un proxy HTTPS. Cela ne modifie pas la réponse. Pour l'intégrer avec le code http http écriture dans la clause d'autre. Vous pouvez trouver du code http pour proxy à plusieurs endroits.
En gros, ce qui se passe est lorsque le client envoie une demande HTTPS à proxy, il est livré avec Connect Keyword. Vous devez envoyer http / 1.1 200 OK au client après avoir établi la connexion avec UPSTREAM Server. Après cela, vous devez fournir le flux d'entrée entrant du client sans en-tête / hôte, etc. sur le serveur en amont et le flux entrant du serveur en amont au client. P>
Vous n'avez pas besoin de penser à SSL du tout. p>
Veuillez lire le faq et Comment demander
Vérifiez Stackoverflow.com/questions/516323/... et Stackoverflow.com/questions/753191/ ... pour expliquer comment HTTPS sur "Proxy" fonctionne.
@JimGarrison Ohh tellement désolé pour ça .. Je ferai de mon mieux pour demander correctement la prochaine fois. juste besoin d'urgence une réponse.
@ Eugenemayevski'eldoscorp merci c'est tellement utile ..