Hi,

A quick note for future reference:

Older 'hg' clients do not support SNI (Server Name Indication,
https://en.wikipedia.org/wiki/Server_Name_Indication ).
Savannah uses SNI to serve hg repositories over https (together with
cvs/svn/bzr and soon git).

The symptom is:

    $ hg clone https://hg.sv.gnu.org/hgweb/test-project/
    abort: hg.sv.gnu.org certificate error: certificate is for \
        bzr.savannah.gnu.org, bzr.savannah.nongnu.org, bzr.sv.gnu.org, \
        bzr.sv.nongnu.org
    (configure hostfingerprint \
       c0:50:9b:12:09:6c:d7:f4:7e:3e:7d:d8:eb:17:a3:8b:17:ad:36:77 or \
       use --insecure to connect insecurely)

Easily reproduced with:

    $ openssl s_client -connect hg.sv.gnu.org:443 < /dev/null 2>&1 \
         | grep ^subject
    subject=/CN=bzr.savannah.gnu.org

    $ openssl s_client -servername hg.sv.gnu.org \
                       -connect hg.sv.gnu.org:443 < /dev/null 2>&1 \
         | grep ^subject
    subject=/CN=hg.savannah.gnu.org

Also discussed here:
   https://www.mercurial-scm.org/wiki/SecureConnections


Possible workarounds include:
1. Use 'http' instead of 'https'

2. Use '--insecure' :
     hg clone --insecure https://hg.sv.gnu.org/hgweb/test-project/

3. Add the fingerprint to your '.hgrc' file:

    $ FP=c0:50:9b:12:09:6c:d7:f4:7e:3e:7d:d8:eb:17:a3:8b:17:ad:36:77
    $ cat<<EOF>>.hgrc
    [hostfingerprints]
    hg.sv.gnu.org = $FP
    hg.sv.nongnu.org = $FP
    hg.savannah.gnu.org = $FP
    hg.savannah.nongnu.org = $FP
    EOF

  (though note that this is fingerprint might change in the future,
   and it's rather arbitrary that 'bzr' certificate is used instead
   of another).

4. Upgrade 'hg' (and/or the underlying python setup).



comments welcomed,
 - assaf

Reply via email to