Ssl
使用 -v(詳細)標誌時,cURL 在 SSL 證書方面的行為不同?
使用 Ubuntu 16.04,
curl
版本 7.47.0我正在嘗試調試 SSL 證書問題,並在使用
curl
. 當我剛剛執行時: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'
但是,當我附加
-v
標誌時: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"}
請注意,最後
{"message": "Hello World"}
, 是預期的響應。為什麼
curl
在詳細模式下執行時,其對 SSL 證書詳細資訊的信任會有所不同?man
據我所知,這在頁面中沒有指定。
您似乎有兩個具有相同主機名的不同
A
(或IPv6)記錄。AAAA
當一個主機名有多個記錄時,這會導致對該主機名的每次查找都返回不同的 IP 地址循環方式。當您交替使用和不使用詳細模式的請求時,IP 地址也會交替出現,導致非詳細請求命中錯誤的 IP 地址,而詳細請求命中正確的 IP 地址。這就是為什麼正確的證書出現在詳細地址中的原因
subject: CN=myapp.com
行,而在非詳細地址的錯誤中給出了不同的證書。
對此的正確解決方法是刪除不正確的
A
記錄,以便僅顯示配置為提供您的內容的網路伺服器的地址。