Annotation of embedaddon/curl/docs/SSL-PROBLEMS.md, revision 1.1

1.1     ! misho       1:                                   _   _ ____  _
        !             2:                               ___| | | |  _ \| |
        !             3:                              / __| | | | |_) | |
        !             4:                             | (__| |_| |  _ <| |___
        !             5:                              \___|\___/|_| \_\_____|
        !             6: 
        !             7: # SSL problems
        !             8: 
        !             9:   First, let's establish that we often refer to TLS and SSL interchangeably as
        !            10:   SSL here. The current protocol is called TLS, it was called SSL a long time
        !            11:   ago.
        !            12: 
        !            13:   There are several known reasons why a connection that involves SSL might
        !            14:   fail. This is a document that attempts to details the most common ones and
        !            15:   how to mitigate them.
        !            16: 
        !            17: ## CA certs
        !            18: 
        !            19:   CA certs are used to digitally verify the server's certificate. You need a
        !            20:   "ca bundle" for this. See lots of more details on this in the SSLCERTS
        !            21:   document.
        !            22: 
        !            23: ## CA bundle missing intermediate certificates
        !            24: 
        !            25:   When using said CA bundle to verify a server cert, you will experience
        !            26:   problems if your CA cert does not have the certificates for the
        !            27:   intermediates in the whole trust chain.
        !            28: 
        !            29: ## Protocol version
        !            30: 
        !            31:   Some broken servers fail to support the protocol negotiation properly that
        !            32:   SSL servers are supposed to handle. This may cause the connection to fail
        !            33:   completely. Sometimes you may need to explicitly select a SSL version to use
        !            34:   when connecting to make the connection succeed.
        !            35: 
        !            36:   An additional complication can be that modern SSL libraries sometimes are
        !            37:   built with support for older SSL and TLS versions disabled!
        !            38: 
        !            39:   All versions of SSL are considered insecure and should be avoided. Use TLS.
        !            40: 
        !            41: ## Ciphers
        !            42: 
        !            43:   Clients give servers a list of ciphers to select from. If the list doesn't
        !            44:   include any ciphers the server wants/can use, the connection handshake
        !            45:   fails.
        !            46: 
        !            47:   curl has recently disabled the user of a whole bunch of seriously insecure
        !            48:   ciphers from its default set (slightly depending on SSL backend in use).
        !            49: 
        !            50:   You may have to explicitly provide an alternative list of ciphers for curl
        !            51:   to use to allow the server to use a WEAK cipher for you.
        !            52: 
        !            53:   Note that these weak ciphers are identified as flawed. For example, this
        !            54:   includes symmetric ciphers with less than 128 bit keys and RC4.
        !            55: 
        !            56:   Schannel in Windows XP is not able to connect to servers that no longer
        !            57:   support the legacy handshakes and algorithms used by those versions, so we
        !            58:   advice against building curl to use Schannel on really old Windows versions.
        !            59: 
        !            60:   References:
        !            61: 
        !            62:   https://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01
        !            63: 
        !            64: ## Allow BEAST
        !            65: 
        !            66:   BEAST is the name of a TLS 1.0 attack that surfaced 2011. When adding means
        !            67:   to mitigate this attack, it turned out that some broken servers out there in
        !            68:   the wild didn't work properly with the BEAST mitigation in place.
        !            69: 
        !            70:   To make such broken servers work, the --ssl-allow-beast option was
        !            71:   introduced. Exactly as it sounds, it re-introduces the BEAST vulnerability
        !            72:   but on the other hand it allows curl to connect to that kind of strange
        !            73:   servers.
        !            74: 
        !            75: ## Disabling certificate revocation checks
        !            76: 
        !            77:   Some SSL backends may do certificate revocation checks (CRL, OCSP, etc)
        !            78:   depending on the OS or build configuration. The --ssl-no-revoke option was
        !            79:   introduced in 7.44.0 to disable revocation checking but currently is only
        !            80:   supported for Schannel (the native Windows SSL library), with an exception
        !            81:   in the case of Windows' Untrusted Publishers blacklist which it seems can't
        !            82:   be bypassed. This option may have broader support to accommodate other SSL
        !            83:   backends in the future.
        !            84: 
        !            85:   References:
        !            86: 
        !            87:   https://curl.haxx.se/docs/ssl-compared.html

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>