Re: [TLS] Certificate validation can of worms

mrex@sap.com (Martin Rex) Tue, 08 April 2014 17:06 UTC

Return-Path: <mrex@sap.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 761AA1A058E for <tls@ietfa.amsl.com>; Tue, 8 Apr 2014 10:06:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.252
X-Spam-Level:
X-Spam-Status: No, score=-3.252 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HELO_EQ_DE=0.35, J_CHICKENPOX_34=0.6, RCVD_IN_DNSWL_HI=-5, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4jCBUCR2UMj0 for <tls@ietfa.amsl.com>; Tue, 8 Apr 2014 10:06:18 -0700 (PDT)
Received: from smtpde02.sap-ag.de (smtpde02.sap-ag.de [155.56.68.140]) by ietfa.amsl.com (Postfix) with ESMTP id 753F41A0641 for <tls@ietf.org>; Tue, 8 Apr 2014 10:06:17 -0700 (PDT)
Received: from mail05.wdf.sap.corp by smtpde02.sap-ag.de (26) with ESMTP id s38H6AJf025154 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 8 Apr 2014 19:06:10 +0200 (MEST)
In-Reply-To: <CACsn0ckKEMTWMH=0+=Bbp8djnKtbawkcVeEujnonBB_8ND03_Q@mail.gmail.com>
To: Watson Ladd <watsonbladd@gmail.com>
Date: Tue, 08 Apr 2014 19:06:10 +0200
X-Mailer: ELM [version 2.4ME+ PL125 (25)]
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="US-ASCII"
Message-Id: <20140408170610.A40831ACB0@ld9781.wdf.sap.corp>
From: mrex@sap.com
X-SAP: out
Archived-At: http://mailarchive.ietf.org/arch/msg/tls/10EsdSlcS7CWnsyk9EiWPuZRDTo
Cc: "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] Certificate validation can of worms
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: mrex@sap.com
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tls/>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 08 Apr 2014 17:06:25 -0000

Watson Ladd wrote:
> "Martin Rex" <mrex@sap.com> wrote:
>>
>>                     PKIX deals with the black box called "certificate
>> path validation" (within which EKU-processing is defined), and with
>> requirements for "conforming CAs" which issue X.509v3 certs (of which
>> there seem to exist very few, if any, considering how much junk
>> X.509v3 certificates are floating around.
>>
>> Could it be that GoDaddy is issuing Server certs that aren't valid
>> ASN.1 DER ?
>>
>> Their ASN.1 DER encoder doesn't seen to implement "BOOLEAN DEFAULT FALSE"
>> correctly:
>>
>> BasicConstraints ::= SEQUENCE {
>>      cA                      BOOLEAN DEFAULT FALSE,
>>      pathLenConstraint       INTEGER (0..MAX) OPTIONAL }
>>
> 
> Well, are they? Short of a hex dump of a GoDaddy certificate+chapter and
> verse of X509 I don't know how we are supposed to evaluate your claim.

openssl asn1dump for Server cert from https://www.verisign.com/

 1087:d=4  hl=2 l=   9 cons: SEQUENCE
 1089:d=5  hl=2 l=   3 prim: OBJECT            :X509v3 Basic Constraints
 1094:d=5  hl=2 l=   2 prim: OCTET STRING      [HEX DUMP]:3000

openssl asn1dump for Server cert from https://www.godaddy.com/

  784:d=4  hl=2 l=  15 cons: SEQUENCE
  786:d=5  hl=2 l=   3 prim: OBJECT            :X509v3 Basic Constraints
  791:d=5  hl=2 l=   1 prim: BOOLEAN           :255
  794:d=5  hl=2 l=   5 prim: OCTET STRING      [HEX DUMP]:3003010100
  801:d=4  hl=2 l=  29 cons: SEQUENCE
  803:d=5  hl=2 l=   3 prim: OBJECT            :X509v3 Extended Key Usage
  808:d=5  hl=2 l=  22 prim: OCTET STRING      [HEX DUMP]:301406082B060105050703
0106082B06010505070302


The godaddy ASN.1 DER encoding problem might be specific to the
BasicConstraints extension.  The criticality Boolean is correctly
omitted in their non-critical ExtendedKeyUsage encoding, but
not within the BasicConstraints extension.


-Martin