使用 WinSSL、NTLM、HTTP2、SSH2 和 IPv6 支持构建工作 libcurl
在我们的PHP应用程序中,我们需要以某种方式构建PHP curl扩展,它支持以下功能:
- WinSSL(访问 Windows 证书存储区)
- NTLM、基本和摘要式身份验证
- HTTP/2 支持
- 支持 SSH2
- 支持 IPv6
我试图以某种方式构建curl来实现这一点:
- 将其与 WinSSL 链接
- 将其与nghttp2链接
- 将其与 libssh2 链接
- 启用 IPv6
我用命令行这样做了:
nmake /f Makefile.vc mode=dll VC=15 ENABLE_WINSSL=yes DEBUG=no MACHINE=x64 ENABLE_SSPI=no WITH_NGHTTP2=dll WITH_ZLIB=static WITH_SSH2=static WITH_DEVEL=C:\curl\deps-x64
在卷曲子文件夹中。然后,我根据结果编译了PHP curl扩展。winbuild/
因此,当对提供基本,摘要,NTLM和协商身份验证(Exchange Web服务)的Web服务执行HTTP请求时,我有以下不正确的行为:
如果使用,一切正常。
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
如果使用,一切正常。
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
如果使用,则身份验证将失败。
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM | CURLAUTH_BASIC);
失败的请求包含一个 NTLM 令牌,该令牌太短(似乎在某些时候被切断)。一些谷歌搜索表明,这可能是由于curl被编译为使用SSPI。但是,我无法禁用 SSPI,因为 WinSSL 需要它。
有谁知道这个问题的解决方案吗?如何获得满足上述所有要求的php-curl扩展?