1

我正在与我正在与我的大学一起做的项目进行 CAS 集成。最终的集成应该使用 symfony2,但是首先我需要让示例代码工作。

我终于开始使用phpCAS 1.3.2处理example_simple.php示例,但是指令:

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 命令吗?为什么会这样?

我还尝试使用我的 XAMP 安装(Xampp 1.8.3)提供的 curl-ca-bundle.crt 证书。

如您所见,我对证书有点迷茫。

我在https://github.com/Jasig/phpCAS/issues?state=open中阅读了有关 phpCAS 和最新 Ubuntu 版本的问题。但是,即使没有认证(默认情况下),我也无法使用主代码进行此操作。

任何想法,将不胜感激...

4

1 回答 1

0

我在 github 库中找到了解决方案:https ://github.com/Jasig/phpCAS/issues/119

原因是我的 xampp 安装中 PHP 使用的 curl 二进制文件与系统的 curl 二进制文件不同。系统一可以访问 /etc/ssl/certs/ 证书,但 xampp curl 没有(当然,除非你没有指明)。默认情况下,它会在一个特殊的证书捆绑文件中进行搜索。

最后我找到了我的 cas-server 的真实证书并且我正在使用它,但是如果你遇到类似的问题,也许你想在讨论线程结束时使用其他建议的解决方案。

于 2014-05-24T13:50:38.367 回答