¿CURL se comporta de manera diferente con respecto a los certificados SSL cuando se usa el indicador -v (detallado)?

¿CURL se comporta de manera diferente con respecto a los certificados SSL cuando se usa el indicador -v (detallado)?

Usando Ubuntu 16.04, curlversión 7.47.0

Estoy intentando depurar un problema con el certificado SSL y veo un comportamiento extraño al utilizar curl. Cuando acabo de ejecutar:

ubuntu@ip-172-30-0-81:~$ curl https://myapp.com/hello
curl: (51) SSL: certificate subject name (cloud.mynameserver.com) does not match target host name 'myapp.com'

Sin embargo, cuando adjunto la -vbandera:

ubuntu@ip-172-30-0-81:~$ curl -v https://myapp.com/hello
*   Trying {IP REDACTED}...
* Connected to myapp.com ({IP REDACTED}) port 443 (#0)
* found 173 certificates in /etc/ssl/certs/ca-certificates.crt
* found 692 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384
*    server certificate verification OK
*    server certificate status verification SKIPPED
*    common name: myapp.com (matched)
*    server certificate expiration date OK
*    server certificate activation date OK
*    certificate public key: RSA
*    certificate version: #3
*    subject: CN=myapp.com
*    start date: Sat, 31 Dec 2016 22:57:00 GMT
*    expire date: Fri, 31 Mar 2017 22:57:00 GMT
*    issuer: C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3
*    compression: NULL
* ALPN, server accepted to use http/1.1
> GET /hello HTTP/1.1
> Host: myapp.com
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.10.0 (Ubuntu)
< Date: Sat, 21 Jan 2017 00:25:15 GMT
< Content-Type: application/json
< Transfer-Encoding: chunked
< Connection: keep-alive
< Strict-Transport-Security: max-age=63072000; includeSubdomains
< X-Frame-Options: DENY
< X-Content-Type-Options: nosniff
<
* Connection #0 to host myapp.com left intact
{"message": "Hello World"}

Tenga en cuenta que el final {"message": "Hello World"}es la respuesta esperada.

¿Por qué se curlcomporta de manera diferente con respecto a la confianza de los detalles del certificado SSL cuando se ejecuta en modo detallado? Esto no está especificado en la manpágina, hasta donde yo sé.

Respuesta1

Parece que tiene dos registros diferentes A(o AAAApara IPv6) con el mismo nombre de host. Cuando hay varios registros para un nombre de host, esto hace que cada búsqueda de ese nombre de host devuelva un estilo de operación por turnos de dirección IP diferente.

Cuando alterna solicitudes con y sin modo detallado, la dirección IP también se alterna, lo que hace que las solicitudes no detalladas lleguen a la dirección IP incorrecta, mientras que las solicitudes detalladas lleguen a la dirección IP correcta. Es por eso que el certificado correcto aparece en la dirección detallada de acuerdo con el

subject: CN=myapp.com

línea, mientras que se proporciona un certificado diferente en el error para la dirección no detallada.

La solución correcta para esto es eliminar el Aregistro incorrecto para que solo aparezcan las direcciones de los servidores web configurados para ofrecer su contenido.

información relacionada