cURL error 60: SSL certificate problem: unable to get local issuer certificate

Auf einem frischen Windows System mit installiertem PHP7 wollte ich ein neues Symfony Projekt starten.

$ php symfony new projektname

  [GuzzleHttp\Exception\RequestException]
  cURL error 60: SSL certificate problem: unable to get local issuer certificate

Doch ich erhielt die Fehlermeldung cURL error 60: SSL certificate problem: unable to get local issuer certificate vom Paket GuzzleHttp.

Die Lösung ist denkbar einfach. Die Datei cacert.pem von diesem Link (http://curl.haxx.se/ca/cacert.pem) herunterladen und speichern. In meinem Fall habe ich sie in c:\php\cacert.pem abgelegt.

Anschließend muss in der php.ini der Parameter curl.cainfo auf die heruntergeladene Datei verweisen. Bei mir sieht das dann so aus:

...

[curl]
curl.cainfo = "c:\php\cacert.pem"

...

CSR für Zertifikatsanfrage erstellen

Damin man ein SSL Zertifikat bei einer CA (Certification Authority) beantragen kann, benötigt man einen CSR (Certificate Signing Request). Diesen erstelle ich immer auf der Maschine auf der später das SSL Zertifikat eingesetzt werden soll.

Ausgangspunkt für einen CSR ist ein privater Schlüssel. Sollte dieser nicht vorhanden sein, kann er mit folgendem Befehl erstellt werden.

$ openssl genrsa -out domainname.de.key 4096

Jetzt kann mit Hilfe des privaten Schlüssels der CSR erzeugt werden.

$ openssl req -new -key domainname.de.key -out domainname.de.csr

Im folgenden werden ein paar informationen abgefragt:

Country Name (2 letter code) [AU]: DE
State or Province Name (full name) [Some-State]: Berlin
Locality Name (eg, city) []: Berlin
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Firmenname GmbH
Organizational Unit Name (eg, section) []:  
Common Name (eg, YOUR name) []: www.domainname.de
Email Address []: webmaster@domainname.de

Bei Bedarf kann man den CSR noch einmal testen:

$ openssl req -noout -text -in domainname.de.csr

Der erstellte CSR kann jetzt beim Zertifikatsausteller eingereicht werden.