On Mon, Nov 17, 2014 at 03:13:22PM +0800, Jerry OELoo wrote:

> When I construct google's (www.google.com) certificate chain, it is
> different with browser's
> 
> [openssl API]
> www.google.com -> Google Internet Authority G2 -> GeoTrust Global CA
> -> Equifax Secure Certificate Authority

This is what Google sends on the wire.

> [IE/Chrome]
> www.google.com -> Google Internet Authority G2 -> GeoTrust Global CA

The browsers short-cicuit the chain, by finding an alternative trusted
issuer for "G2"

> It seems openssl use one certificate path with "bridge cert" but
> browsers use another certificate path, and in answer, it said
> "OpenSSL, which curl uses, is not, or at least not yet; thus you must
> tell curl to give OpenSSL the Equifax root. (The OpenSSL 1.0.2
> release, currently in beta, is announced to have enhancements in the
> area of cert chain validation, which I haven't looked at in detail
> yet.",

Commit 9d2006d8 (1.0.2 branch) implements a new X509_V_FLAG_TRUSTED_FIRST
flag which should give similar (to the browsers) results if set in
the X509_STORE_CTX used to validate the chain via:

    X509_VERIFY_PARAM_set_flags()

and

    SSL_CTX_set1_param()

see apps/apps.c and apps/s_client.c

> So is there any way that openssl 1.0.1j can solve this and construct
> same certificate path with browsers did?

No, but it is far from clear why "this" is a problem.  Google sends
a chain signed by Equifax.  So OpenSSL builds a chain with that.
When Google stops sending the Equifax cert, OpenSSL will use the
GeoTrust root CA if that's configured.

-- 
        Viktor.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to