【发布时间】:2018-06-24 14:41:58
【问题描述】:
我正在尝试在 localhost 上使用 fsockopen,在 Windows 上使用 https,使用 Wamp。 它在 http 上运行良好,但在 https 上却不行。
我使用 OpenSSL (How to install: OpenSSL + WAMP) 创建了一个证书,并在 httpd-vhosts.conf 文件中声明了一个虚拟主机。
这是 PHP 代码:
$fp = fsockopen("ssl://localhost", 443, $errno, $errstr, FSOCKOPEN_TIMEOUT); // same pb with ssl://www.localhost
这会产生以下错误:
PHP Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
PHP Warning: fsockopen(): Failed to enable crypto
PHP Warning: fsockopen(): unable to connect to ssl://localhost:443 (Unknown error)
当 Apache 启动时,我的 ssl 错误日志文件中也有以下警告(我不知道是否可能相关):
[ssl:warn] [pid 6008:tid 596] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
你知道我做错了什么吗?
谢谢!
【问题讨论】:
-
我怀疑您的证书是针对名称“localhost”的,因此不匹配。
-
谢谢帕特里克。我通过带有“通用名称(例如服务器 FQDN 或您的名称)[]:localhost”的证书重新生成。我没有 Apache 警告“localhost:443:0 服务器证书不包含与服务器名称匹配的 ID”,但我仍然有“SSL 操作失败”错误。