Docker Windows Composer ZScaler SSL Certificate Verify Failed

Я запускаю Docker Windows (контейнеры Linux) на корпоративном компьютере с Windows 10. Я работаю с образом Docker на основе Debian, и на моем рабочем столе Windows работает ZScaler.

Мне были предоставлены два файла сертификата (корневой сертификат и промежуточный сертификат), которые я установил, поместив их в каталог / usr / local / share / ca-Certificates и запустив update-ca-Certificates, который, как представляется, устанавливает сертификаты.

Когда я пытаюсь запустить composer diag, я получаю следующий результат:

composer diag
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: [Composer\Downloader\TransportException] The "https://repo.packagist.org/packages.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 failed
Failed to enable crypto
failed to open stream: operation failed
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 messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
Failed to enable crypto
failed to open stream: operation failed
Checking disk free space: OK
Checking pubkeys:
Tags Public Key Fingerprint: <Omitted
Dev Public Key Fingerprint: <Omitted
OK
Checking composer version:

  [Composer\Downloader\TransportException]
  The "https://getcomposer.org/versions" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages:
  error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
  Failed to enable crypto
  failed to open stream: operation failed


diagnose

Может ли кто-нибудь помочь мне понять, как заставить это работать?

1 ответ

В моем случае корневой сертификат не был установлен должным образом... сертификаты, предоставленные предприятием, имели имя.crt для промежуточного звена и.cer для корневого сертификата. update-ca-Certificates не получает сертификат с именем.cer. Переименование корневого сертификата и повторный запуск update-ca-Certifict установили корневой сертификат и устранили проблему.

Выполнение следующей команды помогло выяснить проблему:

CONNECTED(00000003)
depth=2 DC = com, DC = my-enterprise, DC = ent, CN = ca-intermediate
verify error:num=2:unable to get issuer certificate
issuer= DC = pvt, DC = my-enterprise, CN = ca-rootauth
verify return:1
depth=1 C = US, ST = US, L = US, O = "my-enterprise ", OU = CTE, CN = my-enterprise.com
issuer= DC = com, DC = my-enterprise, DC = ent, CN = ca-intermediate
verify return:1
depth=0 C = US, ST = California, L = San Francisco, O = "GitHub, Inc.", CN = *.github.com
issuer= C = US, ST = US, L = US, O = "my-enterprise ", OU = CTE, CN = my-enterprise.com
verify return:1
---
Certificate chain
0 s:C = US, ST = California, L = San Francisco, O = "GitHub, Inc.", CN = *.github.com
   i:C = US, ST = US, L = US, O = "my-enterprise ", OU = CTE, CN = my-enterprise.com

Это показало, что корневой сертификат не был распознан как действительный CA, и заставил меня перечислить сертификаты, признанные openssl. Я нашел ответ на это здесь:https://unix.stackexchange.com/questions/97244/list-all-available-ssl-ca-certificates

как только я перечислил и подтвердил, что ca-rootauth не существует в списке доверенных центров сертификации, тогда оставалось только выяснить, почему два (корневой и промежуточный) работали по-разному...

Другие вопросы по тегам