プロキシを使用して Windows 7 に Composer をインストール中に SSL 検証失敗エラーが発生する

プロキシを使用して Windows 7 に Composer をインストール中に SSL 検証失敗エラーが発生する

私のエラーは、GUI とコマンド ラインの両方を使用して Composer をインストールしようとすると、SSL 検証が失敗し、プロキシ経由で HTTPS に接続できないという同じエラーが発生することです。私はプロキシの背後で XAMPP を実行している Windows 7 マシンを使用しています。

まず、私はこのエラーについて調査し、他の投稿にある解決策をすべて試しましたが、何を見逃したのか疑問に思っています。

私が試したこと:

  • 現在、Apache用のXAMPPを使用していますが、最新バージョンといくつかの以前のバージョンをダウンロードしてインストールしました。
  • curl-ca-bundle.crt を再度ダウンロードし、\xampp\apache\bin\curl-ca-bundle.crt を更新して最新バージョンを反映しました (XAMPP に付属していたものとダウンロードしたものとでは約 20kb の差があります)。
  • getcomposer.org の証明書を手動でダウンロードし、curl-ca-bundle.crt の末尾に追加しました。(はい、これが PHP/Composer がインストールに使用しているファイルであることは間違いありません)
  • コマンドラインからインストールしようとすると、そのようなホストは知られていないというエラーが表示されます。この問題は、HTTP/HTTPS_PROXY URL が設定されていないことが原因であることがわかりました。それらをオンにすると、GUI 経由の場合と同じエラーが表示されます (以下を参照)。
  • その後、Composer のサイトから .exe をダウンロードしてインストールすると、インストーラーでプロキシを指定するオプション (これを実行) があり、no sush ホストを削除しましたが、プロキシを指定した後、コマンド ラインとまったく同じエラーが発生します。
  • Composer の SSL/TLS を無効にします。ただし、https を使用して Web サイトに接続しようとすると、依然として失敗します。

GUI:

Composer インストーラ スクリプトが成功しませんでした [終了コード 1]。

OpenSSL は「証明書の検証に失敗しました」というエラーで失敗しました。これは、システム上の証明機関ファイルに問題があることを示し、そのファイルが古くなっている可能性があります。

証明書の場所 [openssl.cafile ini 設定から]: \xampp\apache\bin\curl-ca-bundle.crt

コマンドライン PHP で使用される php.ini は、C:\xampp\php\php.ini です。

スクリプト出力:「https://getcomposer.org/versions「ファイルをダウンロードできませんでした: SSL 操作がコード 1 で失敗しました。OpenSSL エラー メッセージ: エラー:1416F086:SSL ルーチン:tls_process_server_certificate:証明書の検証に失敗しました。ストリームを開けませんでした: プロキシ経由で HTTPS サーバーに接続できません

CMDライン:

C:\Users\S0077500\Desktop\Laravel\Attempt 7>php composer.phar diagnose
You are running Composer with SSL/TLS protection disabled.
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: WARNING
[Composer\Downloader\TransportException] The "https://repo.packagist.org/package
s.json" file could not be downloaded: SSL operation failed with code 1. OpenSSL
Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify fa
iled
failed to open stream: Cannot connect to HTTPS server through proxy
Composer is configured to disable SSL/TLS protection. This will leave remote HTT
PS requests vulnerable to Man-In-The-Middle attacks.
Checking HTTP proxy: FAIL
[Composer\Downloader\TransportException] The "https://repo.packagist.org/package
s.json" file could not be downloaded: SSL operation failed with code 1. OpenSSL
Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify fa
iled
failed to open stream: Cannot connect to HTTPS server through proxy
Checking HTTP proxy support for request_fulluri: OK
Checking HTTPS proxy support for request_fulluri: Unable to assess the situation
, maybe github is down (The "https://api.github.com/repos/Seldaek/jsonlint/zipba
ll/1.0.0" file could not be downloaded: SSL operation failed with code 1. OpenSS
L Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify fa
iled
failed to open stream: Cannot connect to HTTPS server through proxy)
Checking github.com rate limit: FAIL
[Composer\Downloader\TransportException] The "https://api.github.com/rate_limit"
 file could not be downloaded: SSL operation failed with code 1. OpenSSL Error m
essages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify fa
iled
failed to open stream: Cannot connect to HTTPS server through proxy
Checking disk free space: OK
Checking pubkeys: FAIL
Missing pubkey for tags verification
Missing pubkey for dev verification
Run composer self-update --update-keys to set them up
Checking composer version:

  [Composer\Downloader\TransportException]
  The "https://getcomposer.org/versions" file could not be downloaded: SSL op
  eration failed with code 1. OpenSSL Error messages:
  error:1416F086:SSL routines:tls_process_server_certificate:certificate veri
  fy failed
  failed to open stream: Cannot connect to HTTPS server through proxy


diagnose


C:\Users\S0077500\Desktop\Laravel\Attempt 7>

答え1

私は xampp 3.0.12 (php5.3) を搭載した Windows 10 を使用しています。composer をインストールできませんでした。以下の手順を試したところ、うまくいきました。

  1. インストーラースクリプトをダウンロードhttps://getcomposer.org/インストーラ
  2. というファイルに保存しますcomposer-setup.php
  3. composer-setup.phpお気に入りのエディターで開きます。
  4. すべての HTTPS を HTTP に置き換えてファイルを保存します。
  5. コマンドプロンプトで以下の 3 つの手順を実行します。

    php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    
    php composer-setup.php
    
    php -r "unlink('composer-setup.php');"
    
  6. できました! Composer が正常にインストールされました。以下を実行できます: php composer.phar

ありがとう

答え2

私も同じエラーに遭遇しました。これが私が問題を解決した方法です。https://getcomposer.org/download/、以下の段落コマンドラインインストール

```
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
```

行を置き換えましphp composer-setup.phpphp composer-setup.php --disable-tls

PHP スクリプトを編集する必要はありません。

php composer-setup.php --help私は、composer-setup.php のコードを確認して、オプションを見つけたときにこのアイデアを思いつきました。コードを読まずに同じ答えをもっと早く見つけるために走るべきでした。

関連情報