A clean build of openssl-1.0.0 (./config run without parameters) does not
use the hashed certificate files from -CApath and fails certificate 
verification. The same behavior is seen when using openssl via the openssl
s_client command as well as the library with curl 7.20.0. The system 
used here is debian lenny (5.0.4) without any openssl development 
packages installed. gcc 4.3.2-1.1 and 4.2.4-6 have been tested with
identical results. make tests runs successfully:

Zlib not supported: compression tests skipped
ALL TESTS SUCCESSFUL.

When supplied with an appropriate .pem fils as -CAfile, 
certificate authentication succeeds.

Curl behaviour can be tested e.g. via
curl -v --cacert /var/tmp/ca/root.crt --capath /var/tmp/ca/hash  
"https://www.google.com/"; 
fails with openssl 1.0.0, but works with 0.9.8m

$ strace -e open ./apps/openssl  s_client -CApath /var/tmp/ca/hash -CAfile 
/var/tmp/ca/root.crt  -connect www.google.com:443
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib/libdl.so.2", O_RDONLY)       = 3
open("/lib/libc.so.6", O_RDONLY)        = 3
open("/usr/local/ssl/openssl.cnf", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such 
file or directory)
WARNING: can't open config file: /usr/local/ssl/openssl.cnf
open("/proc/meminfo", O_RDONLY)         = 3
open("/root/.rnd", O_RDONLY)            = 3
open("/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 3
open("/var/tmp/ca/root.crt", O_RDONLY|O_LARGEFILE) = 3
open("/usr/local/ssl/cert.pem", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file 
or directory)
open("/etc/resolv.conf", O_RDONLY)      = 3
open("/etc/resolv.conf", O_RDONLY)      = 3
open("/etc/nsswitch.conf", O_RDONLY)    = 3
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib/libnss_files.so.2", O_RDONLY) = 3
open("/etc/host.conf", O_RDONLY)        = 3
open("/etc/hosts", O_RDONLY|O_CLOEXEC)  = 3
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib/libnss_dns.so.2", O_RDONLY)  = 3
open("/lib/libresolv.so.2", O_RDONLY)   = 3
CONNECTED(00000003)
depth=1 C = ZA, O = Thawte Consulting (Pty) Ltd., CN = Thawte SGC CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
   i:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
 1 s:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
   i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x
MTEyMTgyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcw
FQYDVQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
gYEA6PmGD5D6htffvXImttdEAoN4c9kCKO+IRTn7EOh8rqk41XXGOOsKFQebg+jN
gtXj9xVoRaELGYW84u+E593y17iYwqG7tcFR39SDAqc9BkJb4SLD3muFXxzW2k6L
05vuuWciKh0R73mkszeK9P4Y/bz5RiNQl/Os/CRGK1w7t0UCAwEAAaOB5zCB5DAM
BgNVHRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3Rl
LmNvbS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUF
BwMCBglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRw
Oi8vb2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0
ZS5jb20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUF
AAOBgQCfQ89bxFApsb/isJr/aiEdLRLDLE5a+RLizrmCUi3nHX4adpaQedEkUjh5
u2ONgJd8IyAPkU0Wueru9G2Jysa9zCRo1kNbzipYvzwY4OA8Ys+WAi0oR1A04Se6
z5nRUP8pJcA2NhUzUnC+MY+f6H/nEQyNv4SgQhqAibAxWEEHXw==
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer=/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
---
No client certificate CA names sent
---
SSL handshake has read 1902 bytes and written 396 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-SHA
Server public key is 1024 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : RC4-SHA
    Session-ID: 556A0D8370C574309889C4067A82D88E778C0872B810D929C4F568CE68F7514B
    Session-ID-ctx: 
    Master-Key: 
429F02DDECFED4F0761D71A890AFD6ECBD4FA837539DF73437222C6B0761ECCD5061BFFE16D24DF42E90DC59200950EE
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    TLS session ticket lifetime hint: 100800 (seconds)
    TLS session ticket:
    0000 - 1a b6 4a e9 9e fd 36 e2-74 0a 05 ba 4c bf b3 d3   ..J...6.t...L...
    0010 - 8b c0 3e 33 ca 49 f2 f2-e2 96 6f 9b 77 62 08 31   ..>3.I....o.wb.1
    0020 - a3 68 58 eb 04 df b1 6c-48 de e2 33 62 ce 7d a6   .hX....lH..3b.}.
    0030 - bd 12 1d 92 fd b4 f2 96-e7 ab 2e da dc 29 10 63   .............).c
    0040 - 83 1a de 7e 1c 0e e3 2f-1b 99 53 0d 8c e4 c8 8f   ...~.../..S.....
    0050 - 12 77 2f 70 94 ef f6 33-73 c2 72 e2 61 c4 24 12   .w/p...3s.r.a.$.
    0060 - c2 48 ae da 52 e1 c9 ef-99 25 8f bd 1e 6a f0 8e   .H..R....%...j..
    0070 - 57 35 22 62 eb 3e de 2d-de 35 c7 2e bc f2 77 2d   W5"b.>.-.5....w-
    0080 - 0e d5 c2 ee 8a 6f 79 d3-e5 7e 5e e5 8d 2a 82 d5   .....oy..~^..*..
    0090 - de 7b 10 90                                       .{..

    Start Time: 1270564167
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---


The same command line woks as expected with debian's 0.9.8g or 
any of our 0.9.8m builds. Note that /var/tmp/ca/hash/7651b327.0
is read, which openssl 1.0.0 does not even try to open:

$ strace -e open `which openssl`  s_client    -CApath /var/tmp/ca/hash -CAfile 
/var/tmp/ca/root.crt  -connect www.google.com:443
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/usr/lib/i686/cmov/libssl.so.0.9.8", O_RDONLY) = 3
open("/usr/lib/i686/cmov/libcrypto.so.0.9.8", O_RDONLY) = 3
open("/lib/libdl.so.2", O_RDONLY)       = 3
open("/usr/lib/libz.so.1", O_RDONLY)    = 3
open("/lib/libc.so.6", O_RDONLY)        = 3
open("/usr/lib/ssl/openssl.cnf", O_RDONLY|O_LARGEFILE) = 3
open("/proc/meminfo", O_RDONLY)         = 3
open("/root/.rnd", O_RDONLY)            = 3
open("/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 3
open("/var/tmp/ca/root.crt", O_RDONLY|O_LARGEFILE) = 3
open("/usr/lib/ssl/cert.pem", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file 
or directory)
open("/etc/resolv.conf", O_RDONLY)      = 3
open("/etc/resolv.conf", O_RDONLY)      = 3
open("/etc/nsswitch.conf", O_RDONLY)    = 3
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib/libnss_files.so.2", O_RDONLY) = 3
open("/etc/host.conf", O_RDONLY)        = 3
open("/etc/hosts", O_RDONLY|O_CLOEXEC)  = 3
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib/libnss_dns.so.2", O_RDONLY)  = 3
open("/lib/libresolv.so.2", O_RDONLY)   = 3
CONNECTED(00000003)
open("/var/tmp/ca/hash/7651b327.0", O_RDONLY|O_LARGEFILE) = 4
open("/etc/localtime", O_RDONLY)        = 4
depth=2 /C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
verify return:1
depth=1 /C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
verify return:1
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
   i:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
 1 s:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
   i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x
MTEyMTgyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcw
FQYDVQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
gYEA6PmGD5D6htffvXImttdEAoN4c9kCKO+IRTn7EOh8rqk41XXGOOsKFQebg+jN
gtXj9xVoRaELGYW84u+E593y17iYwqG7tcFR39SDAqc9BkJb4SLD3muFXxzW2k6L
05vuuWciKh0R73mkszeK9P4Y/bz5RiNQl/Os/CRGK1w7t0UCAwEAAaOB5zCB5DAM
BgNVHRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3Rl
LmNvbS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUF
BwMCBglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRw
Oi8vb2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0
ZS5jb20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUF
AAOBgQCfQ89bxFApsb/isJr/aiEdLRLDLE5a+RLizrmCUi3nHX4adpaQedEkUjh5
u2ONgJd8IyAPkU0Wueru9G2Jysa9zCRo1kNbzipYvzwY4OA8Ys+WAi0oR1A04Se6
z5nRUP8pJcA2NhUzUnC+MY+f6H/nEQyNv4SgQhqAibAxWEEHXw==
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer=/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
---
No client certificate CA names sent
---
SSL handshake has read 1765 bytes and written 304 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : RC4-SHA
    Session-ID: EE614864B9D68D40D04933F585D0FDC5B5DB6FA376930AE67B86838559867A02
    Session-ID-ctx: 
    Master-Key: 
0B6ED48F4446947B3C6AF67173D5D99E34E411FC3B9F66BD8F3104B5A797C0A50E3CD580687C799376E29F51F1B89668
    Key-Arg   : None
    Start Time: 1270564124
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---


$ ls -l /var/tmp/ca/hash/76* /var/tmp/ca
lrwxrwxrwx 1 root root   59 Apr  6 16:27 /var/tmp/ca/hash/7651b327.0 -> 
Verisign_Class_3_Public_Primary_Certification_Authority.pem
lrwxrwxrwx 1 root root   24 Apr  6 16:27 /var/tmp/ca/hash/76579174.0 -> 
XRamp_Global_CA_Root.pem

/var/tmp/ca:
total 24
drwxr-xr-x 2 root root 20480 Apr  1 18:45 hash
-rw-r--r-- 1 root root  2569 Apr  6 16:27 root.crt


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

Reply via email to