我正在尝试运行网络代理CGI代理在我运行 macOS 10.11.6 的一台家用服务器上。我使用 Apple 的服务器实用程序设置了 Web 服务器。
总的来说,它是有效的,但有几个网站当我尝试通过 HTTPS 连接时会失败并出现以下错误:
Net::SSLeay::read 错误:SSL_read 8284:1 - 错误:14077410:lib(20):func(119):原因(1040)
不幸的是,我对 Web 服务器或 Perl 不是特别有经验,所以我不知道这意味着什么或者如何修复它。
作为一项实验,我在虚拟机上设置了一个 Ubuntu 14.04 服务器,设置了 apache2,并在其上安装了 CGIProxy,并且它运行良好 - 连接到有问题的站点时没有 SSL 错误。
因此,这似乎与 macOS 与 Linux 略有不同有关,这并不奇怪。我以前在不同情况下遇到过几个与 macOS 系统相关的 SSL 问题。
知道如何解决这个问题吗?
答案1
因此,深入研究此错误后,我发现它表示握手错误,可能是由于 macOS 没有最新版本的 OpenSSL。执行不支持 TLS 1.1 或 1.2 的openssl version
打印,这可能是失败的原因。OpenSSL 0.9.8zh
解决方案是使用 homebrew 安装一个单独的 perl 版本,该版本链接到 homebrew 的 OpenSSL 副本。在我撰写本文时,homebrew 中当前的 perl 版本是 5.24.1,比 macOS 和 Ubuntu 14.04 提供的版本更新。当我安装它并尝试使用它来执行 CGIProxy 时,它崩溃了。所以我尝试了 perl 5.18,成功了。
总而言之,以下方法可以修复此问题:
brew install [email protected]
brew link --force [email protected]
编辑 nph-proxy.cgi 并将第一个 shebang 行从:
#!/usr/bin/perl
到:
#!/usr/local/bin/perl
如果您已经运行,请清除 ~/.cpan 和 ~/perl5 ./nph-proxy init
,然后再次运行./nph-proxy.cgi init
,完成后,我可以毫无困难地使用 CGIProxy 访问之前有问题的网站。