Сбой Composer при использовании Satis с HTTPS (внутренний CA)

Я пытаюсь настроить наш внутренний сервер Satis, который должен быть доступен через HTTPS (сертификат подписан внутренним центром сертификации).
В Linux все работает как положено, когда корневой сертификат CA добавлен в хранилище сертификатов (например, /etc/ssl/certs/ca-certificates.crt).
Но на моем Mac я получаю сообщение об ошибке «Сбой операции SSL с кодом 1» даже после добавления сертификата в цепочку ключей OS X.
Скручивание в командной строке и использование libcurl в PHP может извлечь URL HTTPS, но Composer и file_get_contents (который используется Composer) всегда выдают ошибку «Ошибка операции SSL с кодом 1».

Я знаю, что могу указать «openssl.capath» в моем php.ini, но почему он работает с Curl без указания пути?

0

Решение

Я наконец понял, что не так:

Curl использует SecureTransport вместо OpenSSL, поэтому он напрямую использует цепочку ключей OS X и поэтому работает с сертификатами, подписанными общедоступными CA, а также нашим внутренним CA (я уже добавлял его в системную цепочку ключей ранее).

file_get_contents использует OpenSSL, который использует свой собственный пакет CA, расположенный в /usr/local/etc/openssl/cert.pem,

Поскольку /usr/local/etc/openssl/cert.pem по умолчанию содержит только общедоступные центры сертификации, мне пришлось экспортировать сертификаты из цепочки для ключей (системные и системные корни) в cert.pem OpenSSL: security find-certificate -a -p /Library/Keychains/System.keychain /System/Library/Keychains/SystemRootCertificates.keychain | sudo tee /usr/local/etc/openssl/cert.pem

Сейчас file_get_contents() работает как для внутренних, так и для внешних сертификатов / CA.

Но Composer не смотрит в /usr/local/etc/openssl/cert.pemпоэтому мне пришлось установить свойство php.ini в openssl.cafile на путь cert.pem:

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]