Thanks for the quick response, Steve.

On 08/03/13 11:27, Dr. Stephen Henson wrote:
On Fri, Aug 02, 2013, Misaki.Miyashita wrote:

>  Hello,
> > We have a server where its ServerCert is signed by an
>  intermediateCA, which is signed by a RootCA.
>  Currently, OpenSSL seems to require RootCA cert to be installed (in
>  the certs dir) in order to connect to the server.
>  We would like a feature where the leaf certificate (ServerCert) can
>  be trusted if that particular cert is in the certs dir.
> > Jordan Brown was in contact with Steve H. to find out that there is
>  an experimental X509_V_FLAG_PARTIAL_CHAIN flag support in 1.0.2.
>  We tried our experiment with 1.0.2 and X509_V_FLAG_PARTIAL_CHAIN.
>  That helped some but does not seem to have addressed the need.
> > I need some help understanding what's going on to resolve this issue.
>  Here is my findings:
> > Test 1: openssl verify -partial_chain ServerCert.pem > > - This is successful if the intermediate cert is installed: This
>  is  good.
>         - Without "-partial_chain", 'openssl verify' fails even if the
>           intermediate cert is installed.
>         - openssl stat()s for intermediate cert (success) and RootCA
>  cert (fail)
>         - check_trust() returns TRUSTED as last_untrusted(=1) is less than
>           sk_X509_num(=2)
> > - This fails if only the ServerCert is installed.
>         - OpenSSL stats for the intermediateCA (fail) only.
>         - check_trust() returns UNTRUSTED as last_untrusted(=1) is not less
>           than sk_X509_num(=1)
>         - We would like this case to be successful.
> > Test2: openssl s_client -connect lc-sfbay-02:636 -partial_chain
>  -CApath /etc/openssl/certs
> > - This is successful if RootCA certificate is installed
>         - openssl stat()s for RootCA cert (success)
> > - This fails if RootCA is not installed even if ServerCert and/or
>         intermediateCA is installed
>         - openssl stat()s for RootCA cert (fail) only
>         - check_trust() returns UNTRUSTED as last_untrusted(=2) is not less
>           than sk_X509_num(=2)
>         - We would like this case to succeed.
> > Can I get some help figuring out what needs to be changed so that
>  the leaf certificate (ServerCert) can be trusted?
>
This works fine for me and the test certificate apps/server.pem . I'm not sure
what the problem is unless you didn't call c_rehash or equivalent after you
intalled the server certificate. Try using the -CAfile option too.

I have <digest>.0 file linking to the .pem file in the certs dir.
(Note: VS.pem is the root CA cert, oracle.pem is the intermediate CA cert, lc-sfbay-02.pem is the ServerCert)

/etc/openssl/certs# ls -l
total 103
drwxr-xr-x   2 root     root           5 Jul 31 10:57 OLD
-rw-r--r--   1 root     root        1484 Jul 31 08:19 VS.pem
lrwxrwxrwx 1 root root 15 Jul 31 11:14 f3c9bec7.0 -> lc-sfbay-02.pem
-rw-r--r--   1 root     root           0 Aug  1 10:38 last_untrusted++
-rw-r--r--   1 root     root        1996 Jul 31 08:19 lc-sfbay-01.pem
-rw-r--r--   1 root     root        1996 Jul 31 08:19 lc-sfbay-02.pem
-rw-r--r--   1 root     root        2134 Jul 31 08:19 oracle.pem


The following commands all fails with "lookup:unable to get local issuer certificate" % openssl verify -partial_chain -CApath /etc/openssl/certs lc-sfbay-02.pem % openssl verify -partial_chain -CAfile lc-sfbay-02.pem -CApath /etc/openssl/certs lc-sfbay-02.pem % openssl verify -partial_chain -CAfile f3c9bec7.0 -CApath /etc/openssl/certs lc-sfbay-02.pem

When I trace each command, check_trust() return 3 (X509_TRUST_UNTRUSTED) because ctx->last_untrusted(=1) is not less than sk_X509_num(=1).

Do you have any idea why the same test fails for us?

Thank you

-- misaki


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to