まず、SNIをサポートするMojolicious(またはLWPなど)ではありません。 Net::SSLeayだから実際にはIO::Socket::SSLですが、あなたのバージョンがopensslなのではありません。
- openssl1.0以降をインストールしてください。
--prefix
オプションを使用して新しいディレクトリにインストールするように設定して、既に持っているものを邪魔することなく、他のものに依存しないようにすることができます。
- Net::SSLeayを更新して、新しいopensslに対してコンパイルします。バージョン1.50以降が必要です。ここでの問題は、後でNet::SSLeayが幸いに古いopensslで動作することです。モジュールをアップグレードしても、新しいopensslが取得されるわけではありません。
- 更新IO::Socket::SSLから1.56以降。最も早いリリースは2012年からのリリースであるため、とにかく更新する必要があります。
- Mojolicious 2.83(2012年にリリースされていたので古い)は、クライアントのSNIサポートを追加し、Mojolicious 6.40(1月前)はすべてのWebサーバーでこれを追加しました。
あなたはモジュールごとに変更ファイルで見ることで、この情報を見つけることができますが、私たちはここにいる間、のは、それがモジュールをインストールするのと同じくらい簡単ではありませんでソートNet::SSLeayを取得してみましょう。
あなたがに注意を払わなければならないいくつかのもの:あなたは、彼らがバイナリ互換になるように、同じツールでのperl、opensslの、およびNet::SSLeayをコンパイルする必要が
はcpan
を伝えるためにOPENSSL_PREFIX
変数を使用してください(とものはそれが実行されます)。すでに最新Net::SSLeayを持っていますが、opensslの古いバージョンに対してコンパイルした場合cpan
は思っていても
$ export OPENSSL_PREFIX=/usr/local/ssl
$ cpan Net::SSLeay IO::Socket::SSL
、あなたはそれを再コンパイルするモジュールをインストールする強制することができ、その最新:
$ 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
はどのサイト、クライアントに応じて、異なる証明書を提供します要求された。後者はIO :: Socket :: SSLで実装できますが、Mojoliciousがそれを使う方法を提供しているかどうかはわかりません。 –
クライアントとサーバーのアンサーが最適です。 –