Поддержка указания имени сервера в Net :: HTTP?

Я пытаюсь заставить реализацию Ruby Net :: HTTP работать с SNI.

И mail.google.com, и gmail.com находятся на одном IP-адресе, поэтому при подключении через SSL, серверу Google необходимо знать, какой сертификат использовать. По умолчанию он возвращает сертификат mail.google.com, что является проблемой, если вы пытаетесь реализовать WebFinger.

WebFinger требует, чтобы вы получили https://gmail.com/.well-known/ host-meta для получения информации LRDD, однако по соображениям безопасности критически важно проверить информацию о сертификате SSL.

Так как Google обслуживает сертификат mail.google.com по умолчанию в этом случае, SSL post_connection_check не работает. Правильным решением здесь было бы включить указание имени сервера для Net :: HTTP , но это ' Мне неясно, как заставить это работать с привязками Ruby для OpenSSL. У кого-нибудь еще есть идея?

Вы должны увидеть проблему, запустив:

require 'open-uri'
open('https://gmail.com/.well-known/host-meta') { |f| f.read }

Я также создал суть, которая демонстрирует проблему, используя более раннюю версию curl и OpenSSL:

https: // gist.github.com/7936ef38787092a22897[12237 impression

8
задан jww 14 May 2015 в 13:29
поделиться