Я пытаюсь заставить Net::HTTP
реализацию Ruby работать с 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