DrZhmurge
@DrZhmurge

Какой должен быть сертификат для связи Websocket по ssl?

При подключении возникает ошибка:
SSL handshake error: stream_socket_enable_crypto(): Unable to set local cert chain file `/var/www/u0119078/data/www/.../cert/certificate.pem'; Check that your cafile/capath settings include details of your certificate and its issuer

Сертификат и ключ указаны так:
$context = array(
    'ssl' => array(
        'local_cert'  => __DIR__ . '/cert/certificate.pem',
        'local_pk'    => __DIR__ . '/cert/key.key',
        'verify_peer' => false,
    )
);

Содержимое сертификата следующее:
-----BEGIN CERTIFICATE-----
MIIFOTCCBCGgAwIBAgISAx210MjRQxRlgvnIQnC0c8FxMA0GCSqGSIb3DQEBCwUA
...
ecUrrujVtwgFAxYLHz8BaooCeIgbphdAU3c9BBl0z7NZ0h6IRoDl+Mkk3OPR
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
...
nLRbwHOoq7hHwg==
-----END CERTIFICATE-----

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA62gKKWi4QlegmfAnZ6xMhsPElH6PnClEMgTSL7wfymFpAIr1
...
ILXmQaor/Dw//Adk/BYpBtQjAIFP7VTToCHISBZsEKY6/tgHtMBY
-----END RSA PRIVATE KEY-----

Что должно быть в этом сертификате, чтобы он смог цепочку построить как указано в ошибке?
Где то видео что в начале какая то bag инфа идет, но что в ней содержится и откуда она вообще не понимаю.
  • Вопрос задан
  • 248 просмотров
Решения вопроса 1
DrZhmurge
@DrZhmurge Автор вопроса
Была проблема с файлом PRIVATE KEY. Все время возникала ошибка
unable to load Private Key
139633364686736:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:707:Expecting: ANY PRIVATE KEY

Смена кодировки в notepad, расширения, ни к чему не приводили. Пока не заметил что в сертификате переносы строк сохраняются как CR LF. А в ключе просто как CR (для того, чтобы увидеть включите "отображать все символы" в настройках).
620a22a490a36477267271.jpeg
Не стал заморачиваться, а просто скопировал ключ вместо сертификата и сохранил его, чтобы встала кодировка.
После этого все проверки прошли успешно и сертификат начал работать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Тот же самый, который используется для HTTPS, с точки зрения веб-сервера разницы нет. Как составить цепочку - обычно написано на сайте удостоверяющего центра.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы