1. 14 8月, 2019 1 次提交
  2. 20 12月, 2018 1 次提交
    • K
      Admit unknown pkey types at security level 0 · ea7d2c58
      Ken Goldman 提交于
      The check_key_level() function currently fails when the public key
      cannot be extracted from the certificate because its algorithm is not
      supported.  However, the public key is not needed for the last
      certificate in the chain.
      
      This change moves the check for level 0 before the check for a
      non-NULL public key.
      
      For background, this is the TPM 1.2 endorsement key certificate.
      I.e., this is a real application with millions of certificates issued.
      The key is an RSA-2048 key.
      
      The TCG (for a while) specified
      
           Public Key Algorithm: rsaesOaep
      
      rather than the commonly used
      
           Public Key Algorithm: rsaEncryption
      
      because the key is an encryption key rather than a signing key.
      The X509 certificate parser fails to get the public key.
      Reviewed-by: NViktor Dukhovni <viktor@openssl.org>
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/7906)
      ea7d2c58
  3. 18 10月, 2018 2 次提交
    • V
      Apply self-imposed path length also to root CAs · a190ea8a
      Viktor Dukhovni 提交于
      Also, some readers of the code find starting the count at 1 for EE
      cert confusing (since RFC5280 counts only non-self-issued intermediate
      CAs, but we also counted the leaf).  Therefore, never count the EE
      cert, and adjust the path length comparison accordinly.  This may
      be more clear to the reader.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      (cherry picked from commit dc5831da59e9bfad61ba425d886a0b06ac160cd6)
      a190ea8a
    • V
      Only CA certificates can be self-issued · bb692394
      Viktor Dukhovni 提交于
      At the bottom of https://tools.ietf.org/html/rfc5280#page-12 and
      top of https://tools.ietf.org/html/rfc5280#page-13 (last paragraph
      of above https://tools.ietf.org/html/rfc5280#section-3.3), we see:
      
         This specification covers two classes of certificates: CA
         certificates and end entity certificates.  CA certificates may be
         further divided into three classes: cross-certificates, self-issued
         certificates, and self-signed certificates.  Cross-certificates are
         CA certificates in which the issuer and subject are different
         entities.  Cross-certificates describe a trust relationship between
         the two CAs.  Self-issued certificates are CA certificates in which
         the issuer and subject are the same entity.  Self-issued certificates
         are generated to support changes in policy or operations.  Self-
         signed certificates are self-issued certificates where the digital
         signature may be verified by the public key bound into the
         certificate.  Self-signed certificates are used to convey a public
         key for use to begin certification paths.  End entity certificates
         are issued to subjects that are not authorized to issue certificates.
      
      that the term "self-issued" is only applicable to CAs, not end-entity
      certificates.  In https://tools.ietf.org/html/rfc5280#section-4.2.1.9
      the description of path length constraints says:
      
         The pathLenConstraint field is meaningful only if the cA boolean is
         asserted and the key usage extension, if present, asserts the
         keyCertSign bit (Section 4.2.1.3).  In this case, it gives the
         maximum number of non-self-issued intermediate certificates that may
         follow this certificate in a valid certification path.  (Note: The
         last certificate in the certification path is not an intermediate
         certificate, and is not included in this limit.  Usually, the last
         certificate is an end entity certificate, but it can be a CA
         certificate.)
      
      This makes it clear that exclusion of self-issued certificates from
      the path length count applies only to some *intermediate* CA
      certificates.  A leaf certificate whether it has identical issuer
      and subject or whether it is a CA or not is never part of the
      intermediate certificate count.  The handling of all leaf certificates
      must be the same, in the case of our code to post-increment the
      path count by 1, so that we ultimately reach a non-self-issued
      intermediate it will be the first one (not zeroth) in the chain
      of intermediates.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      (cherry picked from commit ed422a2d0196ada0f5c1b6e296f4a4e5ed69577f)
      bb692394
  4. 23 5月, 2018 1 次提交
  5. 01 5月, 2018 1 次提交
  6. 24 4月, 2018 1 次提交
  7. 29 9月, 2017 1 次提交
  8. 23 9月, 2017 1 次提交
    • D
      Guard against DoS in name constraints handling. · 8545051c
      David Benjamin 提交于
      This guards against the name constraints check consuming large amounts
      of CPU time when certificates in the presented chain contain an
      excessive number of names (specifically subject email names or subject
      alternative DNS names) and/or name constraints.
      
      Name constraints checking compares the names presented in a certificate
      against the name constraints included in a certificate higher up in the
      chain using two nested for loops.
      
      Move the name constraints check so that it happens after signature
      verification so peers cannot exploit this using a chain with invalid
      signatures. Also impose a hard limit on the number of name constraints
      check loop iterations to further mitigate the issue.
      
      Thanks to NCC for finding this issue. Fix written by Martin Kreichgauer.
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      Reviewed-by: NAndy Polyakov <appro@openssl.org>
      (Merged from https://github.com/openssl/openssl/pull/4393)
      8545051c
  9. 22 8月, 2017 2 次提交
  10. 21 8月, 2017 1 次提交
  11. 26 4月, 2017 1 次提交
  12. 25 2月, 2017 1 次提交
  13. 03 12月, 2016 1 次提交
  14. 25 8月, 2016 1 次提交
  15. 23 8月, 2016 1 次提交
  16. 20 8月, 2016 1 次提交
  17. 06 8月, 2016 1 次提交
  18. 03 8月, 2016 1 次提交
  19. 30 7月, 2016 1 次提交
  20. 26 7月, 2016 1 次提交
  21. 25 7月, 2016 2 次提交
  22. 22 7月, 2016 1 次提交
  23. 12 7月, 2016 2 次提交
    • V
      Perform DANE-EE(3) name checks by default · 5ae4ceb9
      Viktor Dukhovni 提交于
      In light of potential UKS (unknown key share) attacks on some
      applications, primarily browsers, despite RFC761, name checks are
      by default applied with DANE-EE(3) TLSA records.  Applications for
      which UKS is not a problem can optionally disable DANE-EE(3) name
      checks via the new SSL_CTX_dane_set_flags() and friends.
      Reviewed-by: NRich Salz <rsalz@openssl.org>
      5ae4ceb9
    • D
      Add nameConstraints commonName checking. · 5bd5dcd4
      Dr. Stephen Henson 提交于
      New hostname checking function asn1_valid_host()
      
      Check commonName entries against nameConstraints: any CN components in
      EE certificate which look like hostnames are checked against
      nameConstraints.
      
      Note that RFC5280 et al only require checking subject alt name against
      DNS name constraints.
      Reviewed-by: NRichard Levitte <levitte@openssl.org>
      5bd5dcd4
  24. 30 6月, 2016 1 次提交
    • R
      Remove the envvar hack to enable proxy cert processing · 8e21938c
      Richard Levitte 提交于
      When the proxy cert code was initially added, some application authors
      wanted to get them verified without having to change their code, so a
      check of the env var OPENSSL_ALLOW_PROXY_CERTS was added.
      
      Since then, the use of this variable has become irrelevant, as it's
      likely that code has been changed since, so it's time it gets removed.
      Reviewed-by: NTim Hudson <tjh@openssl.org>
      8e21938c
  25. 29 6月, 2016 1 次提交
  26. 21 6月, 2016 2 次提交
  27. 19 5月, 2016 1 次提交
  28. 18 5月, 2016 2 次提交
  29. 09 5月, 2016 1 次提交
  30. 03 5月, 2016 1 次提交
  31. 29 4月, 2016 1 次提交
  32. 28 4月, 2016 1 次提交
    • V
      Future proof build_chain() in x509_vfy.c · 69664d6a
      Viktor Dukhovni 提交于
      Coverity reports a potential NULL deref when "2 0 0" DANE trust-anchors
      from DNS are configured via SSL_dane_tlsa_add() and X509_STORE_CTX_init()
      is called with a NULL stack of untrusted certificates.
      
      Since ssl_verify_cert_chain() always provideds a non-NULL stack of
      untrusted certs, and no other code path enables DANE, the problem
      can only happen in applications that use SSL_CTX_set_cert_verify_callback()
      to implement their own wrappers around X509_verify_cert() passing
      only the leaf certificate to the latter.
      
      Regardless of the "improbability" of the problem, we do need to
      ensure that build_chain() handles this case correctly.
      Reviewed-by: NMatt Caswell <matt@openssl.org>
      69664d6a
  33. 26 4月, 2016 1 次提交
  34. 18 4月, 2016 1 次提交