2016-07-14 13 views
0

Ich versuche, unseren internen Satis-Server einzurichten, der über HTTPS erreichbar sein soll (Zertifikat wird von einer internen CA signiert). Unter Linux funktioniert alles wie erwartet, sobald das Stammzertifikat der Zertifizierungsstelle dem Zertifikatspeicher hinzugefügt wurde (z. B. /etc/ssl/certs/ca-certificates.crt). Aber auf meinem Mac bekomme ich einen Fehler "SSL-Operation mit Code 1 fehlgeschlagen" sogar nach dem Hinzufügen des Zertifikats zum OS X Keychain. Curl in der Befehlszeile und die Verwendung von libcurl in PHP kann die HTTPS-URL holen, aber Composer und file_get_contents (die von Composer verwendet werden), werfen immer den Fehler "SSL-Operation mit Code 1 fehlgeschlagen".Composer schlägt fehl, wenn Satis mit HTTPS (interne CA) verwendet wird

Ich weiß, ich kann die "openssl.capath" in meiner php.ini angeben, aber warum funktioniert es mit Curl ohne Angabe des Pfades?

Antwort

1

ich endlich herausgefunden, was falsch ist:

Locke wird mit Securetransport statt OpenSSL zu verwenden, da es direkt mit dem O X-Schlüsselbund und arbeitet deshalb mit dem öffentlichen CAs sowie unsere internen CA signierten Zertifikaten (Ich habe hat es dem System-Schlüsselbund zuvor hinzugefügt).

file_get_contents verwendet OpenSSL, das sein eigenes CA-Paket verwendet, das sich unter /usr/local/etc/openssl/cert.pem befindet.

Als /usr/local/etc/openssl/cert.pem nur öffentliches CAs standardmäßig enthält, hatte ich die Zertifikate von meinem Schlüsselbund (System und System Roots) an die cert.pem von OpenSSL zu exportieren: security find-certificate -a -p /Library/Keychains/System.keychain /System/Library/Keychains/SystemRootCertificates.keychain | sudo tee /usr/local/etc/openssl/cert.pem

Jetzt funktioniert file_get_contents() sowohl für interne als auch externe Zertifikate/CAs.

Aber Komponist sieht nicht in /usr/local/etc/openssl/cert.pem, so hatte ich die openssl.cafile php.ini-Eigenschaft auf dem Weg des cert.pem einzustellen:

[openssl] openssl.cafile = /usr/local/etc/openssl/cert.pem