Po pierwsze, to nie jest Mojolicious (lub LWP lub coś podobnego), który obsługuje SNI. Jest to IO::Socket::SSL, ale niezupełnie, ponieważ jest to Net::SSLeay, ale nie tak naprawdę, ponieważ jest to Twoja wersja openssl.
- Zainstaluj openssl 1.0 lub nowszy. Prawdopodobnie chcesz użyć opcji
--prefix
, aby skonfigurować instalację w nowym katalogu, aby nie przeszkadzać w tym, co już masz i na czym polegają inne rzeczy.
- Zaktualizuj Net::SSLeay, aby skompilować go względem nowego pliku openssl. Potrzebujesz wersji 1.50 lub nowszej. Problem polega na tym, że późniejszy Net::SSLeay będzie z powodzeniem pracował ze starszym openssl. Aktualizacja modułu nie daje ci nowego openssl.
- Aktualizacja IO::Socket::SSL do 1.56 lub nowszej. Najwcześniejsza wersja pochodzi z 2012 roku, więc i tak należy ją zaktualizować.
- Mojolicious 2,83 (wydany w 2012 roku, tak stary) dodano obsługę SNI dla klientów, a Mojolicious 6.40 (miesiąc temu) dodał ją do wszystkich serwerów sieciowych.
Można znaleźć te informacje, sprawdzając w Zmiany pliku dla każdego modułu, ale skoro już tu jesteśmy, przejdźmy Net::SSLeay klasyfikowane ze to nie jest tak proste, jak instalacja modułu.
Niektóre rzeczy trzeba zwrócić uwagę na:
- Musisz skompilować Perl, OpenSSL i Net::SSLeay z tych samych narzędzi, dzięki czemu są binarnie kompatybilny.
pomocą zmiennej OPENSSL_PREFIX
powiedzieć cpan
(a rzeczy działa), gdzie można znaleźć prawo openssl.
$ export OPENSSL_PREFIX=/usr/local/ssl
$ cpan Net::SSLeay IO::Socket::SSL
Jeśli masz już najnowszą Net::SSLeay ale skompilowany przeciwko starszej wersji OpenSSL, można wymusić zainstalować moduł, aby go skompilować chociaż cpan
myśli jego up-to-date:
$ cpan -f Net::SSLeay IO::Socket::SSL
IO::Socket::SSL ma metody, aby sprawdzić ten (dodane w 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
Myślę, że kwestia ta powinna jasno jeśli proszą o wsparcie klienta dla SNI (tj wysyłając nazwę serwera w ClientHello) lub wsparcie serwer, czyli co multi-site server Mojolicious świadczenia różnych certyfikatów w zależności od witryny klient wymagane. Podczas gdy drugi może być zaimplementowany z IO :: Socket :: SSL, nie jestem pewien, czy Mojolicious oferuje sposób na jego użycie. –
Odpowiedzi dla klienta i serwera byłyby najlepsze. –