Zum Inhalt springen
ecdsa.com
git over HTTPS with libcurl-gnutls (Debian, Ubuntu)Git

Fehlermeldung

fatal: unable to access 'https://git.example.com/team/app.git/': SSL: certificate subject name (www.example.com) does not match target hostname 'git.example.com'

Auch ausgegeben als

  • SSL: certificate subject name (www.example.com) does not match target host name 'git.example.com'

Die Namen in Klammern und Anführungszeichen stammen aus deinem Zertifikat und deiner Remote-URL. libcurl 7.x gab „target host name“ aus, libcurl 8.x gibt „target hostname“ aus. OpenSSL-Builds von git (Git for Windows, Alpine) geben „SSL: no alternative certificate subject name matches target hostname '…'“ aus.

Was der Fehler bedeutet

Dem Zertifikat des Git-Servers wird vertraut, aber es ist für einen anderen Namen ausgestellt als den Host in der Remote-URL. libcurl-gnutls nennt den Subject-Namen des Zertifikats in Klammern und am Ende den Host, mit dem sich git verbunden hat. Zugangsdaten wurden nicht gesendet: Die Verbindung bricht vor jeder HTTP-Anfrage ab.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Remote-URL mit dem Zertifikat vergleichen

    Gib die Remote-URL sowie Subject und SAN-Liste des Zertifikats aus; die Abweichung ist meist offensichtlich.

    bash
    git remote get-url origin
    echo | openssl s_client -connect git.example.com:443 -servername git.example.com 2>/dev/null \
      | openssl x509 -noout -subject -ext subjectAltName
  2. 2.

    Remote auf einen Namen umstellen, den das Zertifikat abdeckt

    git remote set-url ändert die in der Konfiguration des Repositorys gespeicherte URL, ohne dass du neu klonen musst.

    bash
    # Use the name the certificate was issued for
    git remote set-url origin https://gitlab.example.com/team/app.git
  3. 3.

    Eigener Server: Zertifikat für den angezeigten Namen ausstellen

    Sorge dafür, dass die SAN-Liste des Zertifikats zur URL passt, die der Git-Server für Clones anzeigt (external_url bei GitLab, ROOT_URL bei Gitea), damit kopierte URLs die Zertifikatsprüfung bestehen.

    text
    # GitLab Omnibus: the external URL decides the certificate name and the clone URLs
    external_url "https://git.example.com"
    # then: sudo gitlab-ctl reconfigure

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen