Невозможные 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-сервера и использую его, однако, возможно, вы захотите использовать другое предлагаемое решение в конце ветки обсуждения, если у вас возникла подобная проблема.