98 votes

openssl s_client utilisant un proxy

openssl s_client -connect some.https.server:443 -showcerts

est une commande intéressante à exécuter lorsque vous souhaitez inspecter les certificats du serveur et sa chaîne de certificats.

Existe-t-il un moyen d'exécuter cette commande lorsque vous êtes derrière un proxy HTTP/HTTPS ?

63voto

francarl Points 138

Vous pouvez utiliser proxytunnel :

proxytunnel -p yourproxy:8080 -d www.google.com:443 -a 7000 &
openssl s_client -connect localhost:7000 -showcerts

J'espère que cela pourra vous aider !

1 votes

Je devais faire proxytunnel -p yourproxy:8080 -d www.google.com:443 -a 7000 s'exécute en arrière-plan pour libérer le terminal pour la deuxième commande.

3 votes

proxytunnel prend en charge l'authentification par proxy, qui (contrairement à ce qui se passe) openssl s_client -proxy ne le fait pas, du moins pas dans la version 1.1.0h.

57voto

Arnaud Grandville Points 316

Depuis openssl v1.1.0

C:\openssl>openssl version
OpenSSL 1.1.0g  2 Nov 2017
C:\openssl>openssl s_client -proxy 192.168.103.115:3128 -connect www.google.com -CAfile C:\TEMP\internalCA.crt
CONNECTED(00000088)
depth=2 DC = com, DC = xxxx, CN = xxxx CA interne
verify return:1
depth=1 C = FR, L = CROIX, CN = svproxysg1, emailAddress = xxxx@xxxx.xx
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = www.google.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
   i:/C=xxxx/L=xxxx/CN=svproxysg1/emailAddress=xxxx@xxxx.xx
 1 s:/C=xxxx/L=xxxx/CN=svproxysg1/emailAddress=xxxx@xxxx.xx
   i:/DC=com/DC=xxxxx/CN=xxxxx CA interne
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDkTCCAnmgAwIBAgIJAIv4/hQAAAAAMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV
BAYTAkZSMQ4wDAYDVQQHEwVDUk9JWDETMBEGA1UEAxMKc3Zwcm94eXNnMTEeMBwG

34voto

Erich Eichinger Points 838

Pour tous ceux qui viennent ici après mai 2015 : il y a une nouvelle option "-proxy" qui sera incluse dans la prochaine version d'openssl : https://rt.openssl.org/Ticket/Display.html?id=2651&user=guest&pass=guest

19voto

mtomy Points 495

5 votes

Il semble en fait qu'à partir du 22 mai 2015, ce correctif ait été effectivement mis en œuvre. Je vois aussi dans le

1voto

gratinierer Points 199

Même avec openssl v1.1.0, j'ai eu quelques problèmes pour passer notre proxy, par ex. s_client: HTTP CONNECT failed: 400 Bad Request Cela m'a obligé à écrire une classe Java minimale pour montrer la poignée de main SSL.

    public static void main(String[] args) throws IOException, URISyntaxException {
    HttpHost proxy = new HttpHost("proxy.my.company", 8080);
    DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
    CloseableHttpClient httpclient = HttpClients.custom()
            .setRoutePlanner(routePlanner)
            .build();
    URI uri = new URIBuilder()
            .setScheme("https")
            .setHost("www.myhost.com")
            .build();
    HttpGet httpget = new HttpGet(uri);
    httpclient.execute(httpget);
}

Avec la dépendance suivante :

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.2</version>
        <type>jar</type>
    </dependency>

vous pouvez l'exécuter avec Activation de la journalisation Java SSL

Cela devrait produire une belle sortie comme

trustStore provider is :
init truststore
adding as trusted cert:
  Subject: CN=Equifax Secure Global eBusiness CA-1, O=Equifax Secure Inc., C=US
  Issuer:  CN=Equifax Secure Global eBusiness CA-1, O=Equifax Secure Inc., C=US
  Algorithm: RSA; Serial number: 0xc3517
  Valid from Mon Jun 21 06:00:00 CEST 1999 until Mon Jun 22 06:00:00 CEST 2020

adding as trusted cert:
  Subject: CN=SecureTrust CA, O=SecureTrust Corporation, C=US
  Issuer:  CN=SecureTrust CA, O=SecureTrust Corporation, C=US
(....)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X