Я пытаюсь заставить реализацию 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