]> granicus.if.org Git - curl/commitdiff
nss: load CA certificates even with --insecure
authorKamil Dudka <kdudka@redhat.com>
Mon, 6 Mar 2017 15:20:33 +0000 (16:20 +0100)
committerKamil Dudka <kdudka@redhat.com>
Mon, 10 Apr 2017 11:44:52 +0000 (13:44 +0200)
... because they may include an intermediate certificate for a client
certificate and the intermediate certificate needs to be presented to
the server, no matter if we verify the peer or not.

Reported-by: thraidh
Closes #851

lib/vtls/nss.c

index 0149d7e378ce4b9484be70f7970e0db6c1d451b3..1d7047a3dcb6ba190737befa159ddea926d6c2cd 100644 (file)
@@ -1770,9 +1770,12 @@ static CURLcode nss_setup_connect(struct connectdata *conn, int sockindex)
   if(SSL_HandshakeCallback(model, HandshakeCallback, conn) != SECSuccess)
     goto error;
 
-  if(SSL_CONN_CONFIG(verifypeer)) {
+  {
     const CURLcode rv = nss_load_ca_certificates(conn, sockindex);
-    if(rv) {
+    if((rv == CURLE_SSL_CACERT_BADFILE) && !SSL_CONN_CONFIG(verifypeer))
+      /* not a fatal error because we are not going to verify the peer */
+      infof(data, "warning: CA certificates failed to load\n");
+    else if(rv) {
       result = rv;
       goto error;
     }