Während der Ausführung von Composer Install/Update habe ich folgende Fehlermeldung von openssl erhalten:
Die Datei " https://packagist.org/packages.json " konnte nicht heruntergeladen werden: SSL-Operation mit Code 1 fehlgeschlagen. OpenSSL-Fehlermeldungen: Fehler: 14090086: SSL-Routinen: SSL3_GET_SERVER_CERTIFICATE: Zertifikatprüfung fehlgeschlagen Fehler beim Aktivieren der Verschlüsselung Fehler beim Öffnen des Streams: Operation fehlgeschlagen https://packagist.org konnte nicht vollständig geladen werden, Paketinformationen wurden aus dem lokalen Cache geladen und sind möglicherweise nicht mehr aktuell
Ich benutze:
komponist Diag zeigt:
Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity: FAIL
[Composer\Downloader\TransportException] The "https://packagist.org/packages.json" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Failed to enable crypto
failed to open stream: operation failed
Checking disk free space: OK
Checking composer version:
[Komponist\Downloader\TransportException]
Die Datei " https://getcomposer.org/version " konnte nicht heruntergeladen werden: SSL-Vorgang mit Code 1 fehlgeschlagen. OpenSSL-Fehlermeldungen:
Fehler: 14090086: SSL-Routinen: SSL3_GET_SERVER_CERTIFICATE: Zertifikatprüfung fehlgeschlagen
Fehler beim Aktivieren der Verschlüsselung
Stream konnte nicht geöffnet werden: Operation fehlgeschlagen
php -r 'var_dump (openssl_get_cert_locations ());' zeigt an:
array(8) {
["default_cert_file"]=>
string(33) "/opt/lampp/share/openssl/cert.pem"
["default_cert_file_env"]=>
string(13) "SSL_CERT_FILE"
["default_cert_dir"]=>
string(30) "/opt/lampp/share/openssl/certs"
["default_cert_dir_env"]=>
string(12) "SSL_CERT_DIR"
["default_private_dir"]=>
string(32) "/opt/lampp/share/openssl/private"
["default_default_cert_area"]=>
string(24) "/opt/lampp/share/openssl"
["ini_cafile"]=>
string(0) ""
["ini_capath"]=>
string(0) ""
}
Für PHP 5.5.19 ist alles in Ordnung.
Ich habe eine Lösung dafür gefunden
Ich renne:
FreeBSD 10.1
Apache2.4
PHP 5.6.3
Um die CA-Datei zu finden, habe ich diesen Befehl ausgeführt
> locate cacert.pem
Ergebnis war:
/usr/local/lib/Perl5/site_Perl/5.16/Mozilla/CA/cacert.pem
Öffnen Sie dann die Datei php.ini und
ändere das:
openssl.cafile =
Zu diesem:
openssl.cafile =/usr/local/lib/Perl5/site_Perl/5.16/Mozilla/CA/cacert.pem
Hinweis: Diese Direktive ist nur in PHP 5.6.x verfügbar
Starten Sie dann Apache neu
Ich habe das Problem mit dem SSL-Fehler behoben, indem ich das SSL-Zertifikat zum Ordner XAMPP-Zertifikate hinzufügte.
// navigate to a directory to save the certificate
cd /Downloads
// download a certificate
wget http://curl.haxx.se/ca/cacert.pem
// rename and move the file to the Xampp certificates folder
mv cacert.pem /Applications/XAMPP/xamppfiles/share/openssl/cert.pem
Vergessen Sie nicht, Ihren Apache neu zu starten!
Ich verwende Mac OS Sierra und als ich versuchte, den Komponisten mit dem Befehl /usr/local/bin/composer self-update
zu aktualisieren, wurde der Fehler immer angezeigt:
[Composer\Downloader\TransportException]
The "https://getcomposer.org/version" file could not be downloaded: SSL operation failed with co
de 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Failed to enable crypto
failed to open stream: operation failed
Ich habe es mit diesen Schritten behoben:
1) Erstellen Sie die lokale Datenbank mit dem Befehl:
Sudo launchctl load -w /System/Library/LaunchDaemons/com.Apple.locate.plist
2) Suchen Sie die cert-Datei:
locate cacert.pem
3) Überprüfen Sie den Speicherort der php.ini-Datei:
php --ini
4) Wenn die Datei 'Loaded Configuration File' für php.ini
als (none)
angezeigt wird, kopieren Sie die Datei /etc/php.ini.default
in /etc/php.ini
:
Sudo cp /etc/php.ini.default /etc/php.ini
5) Öffnen Sie die php.ini
-Datei und bearbeiten Sie die ;openssl.cafile=
-Zeile, indem Sie sie auskommentieren und den Link an den Speicherort der cert-Datei anhängen:
openssl.cafile=/Users/me/.composer/cacert.pem
Das ist es. Wenn Sie das Composer-Update jetzt ausführen, funktioniert es einwandfrei.
Das Hinzufügen von openssl.cafile zu php.ini hat auch für mich funktioniert. Statt nach der cert-Datei zu suchen, habe ich sie direkt heruntergeladen:
curl http://curl.haxx.se/ca/cacert.pem > cacert.pem
und dann nur auf die openssl.cafile -Einstellung darauf hingewiesen.
Auf dem Mac mit XAMPP:
cd /Applications/XAMPP/xamppfiles/share/openssl
Sudo curl -O -k http://curl.haxx.se/ca/cacert.pem
Sudo mv cacert.pem cert.pem
Apache stoppen und neu starten
Ich habe unter Windows dasselbe Problem gemacht, auch nachdem ich ein gültiges aktuelles Zertifikat hinzugefügt hatte. Ich lasse den Composer hinter dem Proxy laufen. Also muss ich die Umgebungsvariablen http_proxy und https_proxy hinzufügen.
Meine Umgebung: PHP 5.6.33Windows 7 64-Bit Composer-Version 1.6.3 2018-01-31 16:28:17
Ich habe die neuesten Zertifikate CA Bundle heruntergeladen und folgende Pfade in meiner php.ini aktualisiert, die immer noch nicht funktionierten.
curl.cainfo = C:\Certificates\ca-bundle.crt
openssl.cafile= C:\Certificates\ca-bundle.crt
openssl.capath=C:\Certificates
Dann mache folgende Schritte
1) Öffnen Sie den Chrome-Browser und navigieren Sie zu https://packagist.org/
2) Klicken Sie auf das kleine Secure Lock-Symbol
3) Klicken Sie auf Zertifikate gültig
4) Öffnen Sie die Registerkarte Zertifikatpfad, und Sie sehen die folgenden Pfadebenen
5) Das Zertifikat muss für 1 & 2 im Bild markiert werden
6) Um das Zertifikat zu exportieren, klicken Sie auf Zertifikat anzeigen, Registerkarte Details und klicken Sie auf In Datei kopieren
7) Wählen Sie die BASE 64-Codierung
8) Klicken Sie auf Weiter und speichern Sie die Datei an einem Ort. Tun Sie dies für Nr. (2), die in Schritt 4 angezeigt wird
9) Öffnen Sie die .cer-Datei und kopieren Sie den Inhalt an das Ende der .crt-Datei, die Sie in php.ini konfiguriert haben
Dann führen Sie comport install aus - es hat für mich funktioniert
Der Prozess sollte derselbe sein, wenn beim Zugriff auf Sites über Proxy Composer einen ssl-Fehler auslöst.
1.
php -r "print_r(openssl_get_cert_locations());"
array(8) {
["default_cert_file"]=>
string(31) "/usr/local/etc/openssl/cert.pem"
...
}
2.vim php.ini
[openssl]
openssl.cafile=/usr/local/etc/openssl/cert.pem
Fügen Sie diese Konfiguration einfach Ihrer composer.json-Datei hinzu.
"config": {
"secure-http": false
}
Hier ist ein vollständiges Beispiel einer funktionierenden Datei composer.json
"repositories": [{
"type": "composer",
"url": "http://packagist.org"
}],
"require": {
"phpmailer/phpmailer": "^6.0"
},
"config": {
"secure-http": false
}
}
```
composer clearcache
Das hat für mich funktioniert, wenn ich Fehler bekomme:
https://packagist.org konnte nicht vollständig geladen werden, Paketinformationen wurden aus dem lokalen Cache geladen und sind möglicherweise nicht mehr aktuell
Für uns schien dieses Problem nur eines unserer privaten Lager zu betreffen. Es hatte zwar etwas mit Zertifikaten oder einer Unternehmensfirewall zu tun, schien jedoch zeitweilig zu sein, so dass wir es nicht bestätigen konnten, bevor wir eine andere Lösung fanden.
In composer.json haben wir die Repository-URL von https in die ssh-Variante geändert und die Option "no-api": true
hinzugefügt:
"repositories": [
{
"type": "vcs",
"url": "[email protected]:our-user/our-repo.git",
"no-api": true
}
]
Mit dieser Bearbeitung konnten Composer-Aktualisierungs-/Installationsvorgänge erfolgreich abgeschlossen werden.
locate cacert.pem
vi /usr/local/lib/php.ini
#add this
openssl.cafile=/usr/local/share/Perl5/Mozilla/CA/cacert.pem
# press esc then type
:wq #enter
curl -sS https://getcomposer.org/installer | php -- —version=1.0.0-alpha10
mv composer.phar /usr/local/bin/composer
alias composer='/usr/local/bin/composer'
composer -V
php /usr/local/bin/composer global self-update
cd .composer/
composer init
First: Überprüfen Sie den Speicherort der Zertifikatsdatei im default_cert_file
-Schlüssel. Sie finden ihn in openssl_get_cert_locations()
. Eine PHP-Opensl-Funktion. Sie können es wie folgt ausführen:
$ php -r "print_r(openssl_get_cert_locations());"
Ausgabe in meinem System
Array
(
[default_cert_file] => /opt/lampp/share/openssl/cert.pem
[default_cert_file_env] => SSL_CERT_FILE
[default_cert_dir] => /opt/lampp/share/openssl/certs
[default_cert_dir_env] => SSL_CERT_DIR
[default_private_dir] => /opt/lampp/share/openssl/private
[default_default_cert_area] => /opt/lampp/share/openssl
[ini_cafile] =>
[ini_capath] =>
)
Sekunde: Download http://curl.haxx.se/ca/cacert.pem :
$ wget http://curl.haxx.se/ca/cacert.pem
Third: certificate.pem
-Datei in default_cert_file
-Speicherort kopieren:
$ Sudo mv cacert.pem /opt/lampp/share/openssl/cert.pem