Me gustaría utilizar openssl s_client para abrir una conexión TLS a través de un proxy (Squid) a un servidor de origen mediante la solicitud de conexión del método. Estoy utilizando un certificado de cliente para conectarse al servidor proxy, como se muestra:

openssl s_client -connect my_proxy:4443 -CAfile /etc/ssl/ca/ca.crt -cert /etc/ssl/cert/client.crt -key /etc/ssl/key/client_key.pem

Después de ejecutar lo anterior, la información de conexión imprime bien y luego entro en la CONECTE y los métodos GET, y este funciona bien:

CONNECT www.google.com:80 HTTP/1.1
Host: www.google.com

HTTP/1.1 200 Conexión establecida

GET /search?q=ip+address HTTP/1.1
Host: www.google.com

HTTP/1.1 200 OK

Sin embargo, me gustaría ser capaz de establecer una TLS (https), la conexión, pero no he sido capaz de llegar al trabajo:

CONNECT www.google.com:443 HTTP/1.1
Host: www.google.com

HTTP/1.1 200 Conexión establecida

GET /search?q=ip+address HTTP/1.1

cerrado

¿Qué estoy haciendo mal aquí? Antes de decir para tratar de OpenSSL 1.1.x que tiene el proxy parámetro, ya he probado eso. Tenga en cuenta que el CA cert, el cliente cert y clave de cliente en el comando de arriba son para la conexión con el servidor proxy, no para el servidor de destino (google.com), como se muestra a continuación con OpenSSL 1.1.0-pre3 (mismo resultado si intento conectarme a google:443).

openssl s_client -connect google.com:80 -proxy my_proxy:4443 -CAfile /etc/ssl/ca/ca.crt -cert /etc/ssl/cert/client.crt -key /etc/ssl/key/client_key.pem

CONECTADO(00000003)

s_client: HTTP error de conexión

no pares certificado disponible

Ningún certificado de cliente de CA de nombres de envió
Protocolo de enlace SSL tiene 0 bytes y por escrito de 25 bytes
Verificación: OK

Nuevo, (NINGUNA), algoritmo de Cifrado (NINGUNO)
Seguro Renegociación NO ES compatible
Compresión: NINGUNA
Expansión: NINGUNO
No ALPN negociado

Yo era capaz de cargar mi cliente cert, clave de cliente, y el CA cert en Firefox (todos incluidos en un archivo pkcs12) y soy capaz de conectarse a varios sitios web a través de TLS. Esto debería ser posible en la línea de comandos.

InformationsquelleAutor vic | 2016-03-07

1 Comentario

  1. 1

    Nota de que el CA cert, el cliente cert y clave de cliente en el comando de arriba son para la conexión con el servidor proxy, no para -conectar con el servidor.»

    Me cabe duda de que. Según la fuente -proxy es sólo utilizado para hacer el túnel a través del proxy, es decir,

    • hace una conexión TCP con el proxy determinada
    • envía la solicitud de conexión con el objetivo de -connect argumento para el proxy
    • espera de la respuesta de la representación que el túnel se establecieron
    • no certificados están involucrados a la hora de crear el túnel, como debe ser

    Esto debería ser posible en la línea de comandos.

    Esto sólo es posible con la -proxy opción. La versión de s_client que no tienen esta opción, sin embargo, no puede ser utilizado solo para establecer una conexión a través de un proxy HTTP, porque la funcionalidad necesaria es simplemente no se aplican. Usted podría tratar de usar s_client junto con otras herramientas que le proporcionen la necesaria túnel, como socat o proxytunnel.

    • He editado la pregunta para mostrar la salida con el -proxy opción. Mi certs son para conectar a mi servidor proxy, no google.com. La autenticación sólo proxytunnel parece apoyo es user:pass y NTLM. Voy a echar un vistazo y ver si lo que estoy buscando se puede hacer con socat.
    • mi conjetura es que el mismo proxy requiere SSL(es decir, el proxy está configurado para https://my_proxy:4433 y no la más común http://my_proxy:4433), porque de lo contrario el directo s_client para el proxy no habría tenido éxito. Pero apoderados que se requiere SSL sí mismos no son compatibles con la -proxy parámetro y no son compatibles con la mayoría de los otros software que hace uso de servidores proxy HTTP.

Dejar respuesta

Please enter your comment!
Please enter your name here