PHP stream_socket_client在chroot环境中不起作用

时间:2018-06-22 12:35:54

标签: php ssl-certificate chroot stream-socket-client

我尝试使用stream_socket_client()打开ssh连接,但得到:

Could not open socket: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
2018-06-22T13:07:35+02:00 EMERG (0): #0 [internal function]: Zend\Mail\Protocol\AbstractProtocol->Zend\Mail\Protocol\{closure}(2, 'stream_socket_c...', '/httpdocs/vendo...', 213, Array)
#1 /httpdocs/vendor/zendframework/zend-mail/src/Protocol/AbstractProtocol.php(213): stream_socket_client('ssl://lotsearch...', 0, '', 30)
#2 /httpdocs/vendor/zendframework/zend-mail/src/Protocol/Smtp.php(185): Zend\Mail\Protocol\AbstractProtocol->_connect('ssl://lotsearch...')
#3 /httpdocs/vendor/zendframework/zend-mail/src/Transport/Smtp.php(397): Zend\Mail\Protocol\Smtp->connect()
#4 /httpdocs/vendor/zendframework/zend-mail/src/Transport/Smtp.php(383): Zend\Mail\Transport\Smtp->connect()
#5 /httpdocs/vendor/zendframework/zend-mail/src/Transport/Smtp.php(394): Zend\Mail\Transport\Smtp->lazyLoadConnection()
#6 /httpdocs/vendor/zendframework/zend-mail/src/Transport/Smtp.php(251): Zend\Mail\Transport\Smtp->connect()

我正在chroot环境中执行此命令。如果我使用“普通” bash作为外壳,则一切正常。 最初,我认为chroot用户需要访问openssh二进制文件。 但是,即使可以访问它,它也不起作用。

wget https://google.com也不行。

有人在想如何在chroot环境中验证ssl证书吗?

1 个答案:

答案 0 :(得分:1)

好吧,我知道了:

您需要在chroot环境中提供以下内容:

/usr/bin/openssl
/usr/lib/ssl
/etc/ssl
/usr/share/ca-certificates

然后,PHP的stream_socket_client()函数能够SSL验证证书。 Wget现在也可用于受SSL保护的网站wget https://google.com