Невозможные SSL CAS-сертификаты с phpCAS и примеры. Работает только без проверки SSL-сервера

Я делаю интеграцию CAS с проектом, который я делаю с моим университетом. Окончательная интеграция должна быть выполнена с помощью symfony2, однако сначала мне нужно, чтобы пример кода работал.

Я наконец-то начал работать с примером example_simple.php с phpCAS 1.3.2, но с директивой:

phpCAS::setNoCasServerValidation();

включен Я думаю, что я должен использовать вместо:

phpCAS::setCasServerCACert($cas_server_ca_cert_path);

Однако, когда я включаю этот второй (и отключаю другой), авторизация больше не работает. Вот соответствующая ошибка строки вывода журнала:

could not open URL 'https://cas_server.fi/cas/serviceValidate?service=http%3A%2F%2Flocalhost%2Fphpcas2%2Fdocs%2Fexamples%2Fexample_simple.php&ticket=ST-115606-M1Omd1cHWzbLbmxa1nYV-cas' to validate (CURL error #60: SSL certificate problem: unable to get local issuer certificate) [Client.php:2763]

Сервер CAS предоставил мне два файла.crt:

  • MYCASRootCA.crt
  • MYCASLinuxSUBCA.crt

И они должны быть установлены в моей системе (Ubuntu 13.10). Они находятся в разных местах, например /etc/ssl/certs/MYCASLinuxSUBCA.pem, но также:

  • /usr/share/ca-certificates/lut/MYCASRootCA.crt
  • /usr/share/ca-certificates/lut/MYCASLinuxSUBCA.crt

Поэтому, предполагая, что переменная $cas_server_ca_cert_path должна иметь один из этих файлов.crt или.pem (такой как /usr/share/ca-certificates/lut/MYCASLinuxSUBCA.crt), я не могу заставить ее работать. Что я делаю не так? Мой клиент-сервер (без сервера cas) находится на моем локальном хосте. Это проблема? Следует ли мне избегать использования команды setCasServerCACert? Почему это происходит?

Я также пытался использовать сертификат curl-ca-bundle.crt, предоставленный моей установкой XAMP (Xampp 1.8.3).

Я немного заблудился с сертификатами, как вы можете видеть.

Я читал о проблемах с phpCAS и последними версиями Ubuntu в https://github.com/Jasig/phpCAS/issues?state=open. Однако я не могу заставить это работать с главным кодом, даже без сертификации (по умолчанию).

Любые идеи были бы хорошы...

1 ответ

Решение

Я нашел решение вопроса в библиотеке g ithub: https://g ithub.com/Jasig/phpCAS/issues/119

Причина в том, что бинарный файл curl, используемый PHP в моей установке xampp, отличается от бинарного файла curl системы. Системный пользователь имеет доступ к / etc / ssl / certs / Certificates, но xampp curl не имеет (если, конечно, вы его не указали). По умолчанию он выполняет поиск в специальном файле сертификата.

Наконец, я нашел настоящий сертификат для своего cas-сервера и использую его, однако, возможно, вы захотите использовать другое предлагаемое решение в конце ветки обсуждения, если у вас возникла подобная проблема.

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