Dne 6.9.2014 01:58, Kai Engert napsal(a):
> On Tue, 2014-08-26 at 12:36 +0200, Vít Ondruch wrote:
>> $ gem fetch power_assert
>> ERROR:  Could not find a valid gem 'power_assert' (>= 0), here is why:
>>           Unable to download data from https://rubygems.org/ -
>> SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B:
>> certificate verify failed
>> (https://s3.amazonaws.com/production.s3.rubygems.org/latest_specs.4.8.gz)
> The gem tool appears to use openssl.

That is correct.

>
> $ openssl s_client -showcerts -connect rubygems.org:443 2>&1 \
>   |grep "Verify return code"
>     Verify return code: 0 (ok)
>
> $ openssl s_client -showcerts -connect s3.amazonaws.com:443 2>&1 \
>   |grep "Verify return code"
>     Verify return code: 20 (unable to get local issuer certificate)
>
> The failure is with the s3.amazonaws.com host.
> Looking at the certificates the server sends:
>
> $ openssl s_client -showcerts -connect s3.amazonaws.com:443  2>&1 \
>   |egrep " s:| i:"
>
>  0 s:/C=US/ST=Washington/L=Seattle/O=Amazon.com Inc./CN=s3.amazonaws.com
>    i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at
> https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Secure Server CA
> - G3
>
>  1 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at
> https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Secure Server CA
> - G3
>    i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006
> VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public
> Primary Certification Authority - G5
>
>  2 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006
> VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public
> Primary Certification Authority - G5
>    i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification
> Authority
>
> This means, the server sends three certificates during the handshake.
> One server cert, and two intermediates.
>
> The intermediate at level 2 was issued by root CA:
>   C=US
>   O=VeriSign, Inc.
>   OU=Class 3 Public Primary Certification Authority
>
> This root CA is very old, it had been issued in 1996:
>
> With the recent upstream update 2.1 this certificate was disabled for
> the SSL/TLS use, see:
> https://bugzilla.mozilla.org/show_bug.cgi?id=986005
>
> (Symantac/Verisign was aware, cc'ed on the bug, and didn't object.)
>
> When connecting to this server using an NSS client, such as Firefox, it
> works. I believe this is because an alternative trust chain can be
> found.
>
> The intermediate certificate sent by the server at level 1 was issued
> by:
>   C=US
>   O=VeriSign, Inc.
>   OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized
>      use only
>   CN=VeriSign Class 3 Public Primary Certification Authority - G5
>
> A root CA with this subject is included in our trust list.
> So, NSS can find this root CA cert, and succeeded the verification, and
> ignores the unnecessary, additional intermediate CA cert sent by the
> server.
>
> I guess that openssl strictly wants to make use of all intermediates
> sent by the server, and doesn't search for alternative chains. And the
> only certificate satisfying this chain has been marked as untrusted for
> SSL/TLS in our update.

Thanks for the detailed analysis. I could learn something new from it :)

>
> I believe that we must contact Amazon and Symantec about this issue.
> Amazon should remove the second intermediate, ending the path with the
> G5 intermediate. This will allow openssl to find the trusted root CA.
>
> Also, Symantec should reach out to all of their customers and tell them
> you update their configuration.
>
> I will contact them.

Great! Thanks. Should I open ticket against ca-certificates to keep
track about this issue?

>
> If we want things to just work, without requiring server administration,
> then openssl should be enhanced to try additional chains, (or the Ruby
> software could be changed to use NSS).

I was told by Tomáš Mráz that recent OpenSSL can do something like this,
but it is not enabled by default, so it is hardly useful for this case.


Vít

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Reply via email to