Perl 的 Mojolicious支持Server Name Identification (SNI) ,一些 Web 服务器使用一个 HTTPS 证书来托管多个站点。我正在开发一个未设置为使用它的系统,并且在谷歌上搜索了一下并没有发现任何使过程清晰且各个部分明显的东西。 StackOverflow 问题 Perl LWP GET or POST to an SNI SSL URL提到了几件事。
那么,我需要做什么?
最佳答案
首先,支持 SNI 的不是 Mojolicious(或 LWP 或其他)。它是 IO::Socket::SSL ,但不是真的,因为它是 Net::SSLeay ,但不是真的,因为它是您的 openssl 版本.
--prefix
配置选项以将其安装在新目录中,这样您就不会打扰您已经拥有的东西以及其他东西所依赖的东西。 您可以通过查看每个模块的更改文件来找到此信息,但是当我们在这里时,让我们获取 Net::SSLeay排序并不像安装模块那么简单。
您必须注意的一些事项:
使用
OPENSSL_PREFIX
变量告诉cpan
(以及它运行的东西)在哪里可以找到正确的 openssl . $ export OPENSSL_PREFIX=/usr/local/ssl
$ cpan Net::SSLeay IO::Socket::SSL
如果你已经有最新的Net::SSLeay但是针对旧版本的 openssl 编译,您可以强制安装模块以重新编译它,即使
cpan
认为它是最新的: $ cpan -f Net::SSLeay IO::Socket::SSL
IO::Socket::SSL有检查方法(在 1.84 中添加):
$ /usr/local/ssl/bin/openssl version
OpenSSL 1.0.1r 28 Jan 2016
$ perl -MIO::Socket::SSL -le 'print IO::Socket::SSL->VERSION'
2.024
$ perl -MIO::Socket::SSL -le 'print IO::Socket::SSL->can_client_sni'
1
关于perl - 如何为 Mojolicious 设置 SNI 支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35498079/