SSL handshake fails with - a verisign chain certificate - that contains two CA signed certificates and one self-signed certificate

前端 未结 5 958
Happy的楠姐
Happy的楠姐 2020-12-23 14:04

I am stuck with a issue and trying to debug it. We purchased a Verisign certificate. When we use:

openssl> s_client -connect myweb.com:443 -showcerts
         


        
5条回答
  •  天命终不由人
    2020-12-23 14:28

    About the server can deliver to the clients the root cert or not, extracted from the RFC-5246 'The Transport Layer Security (TLS) Protocol Version 1.2' doc it says:

    certificate_list
    This is a sequence (chain) of certificates. The sender's certificate MUST come first in the list. Each following certificate MUST directly certify the one preceding it. Because certificate validation requires that root keys be distributed independently, the self-signed certificate that specifies the root certificate authority MAY be omitted from the chain, under the
    assumption that the remote end must already possess it in order to validate it in any case.

    About the term 'MAY', extracted from the RFC-2119 "Best Current Practice" says:

    5.MAY
    This word, or the adjective "OPTIONAL", mean that an item is truly optional. One vendor may choose to include the item because a
    particular marketplace requires it or because the vendor feels that
    it enhances the product while another vendor may omit the same item.
    An implementation which does not include a particular option MUST be
    prepared to interoperate with another implementation which does
    include the option, though perhaps with reduced functionality. In the same vein an implementation which does include a particular option
    MUST be prepared to interoperate with another implementation which
    does not include the option (except, of course, for the feature the
    option provides.)

    In conclusion, the root may be at the certification path delivered by the server in the handshake.

    A practical use.
    Think about, not in navigator user terms, but on a transfer tool at a server in a militarized zone with limited internet access.
    The server, playing the client role at the transfer, receives all the certs path from the server.
    All the certs in the chain should be checked to be trusted, root included.
    The only way to check this is the root be included at the certs path in transfer time, being matched against a previously declared as 'trusted' local copy of them.

提交回复
热议问题