Ich versuche, Rubys Net::HTTP
Implementierung mit SNI zu arbeiten.
Sowohl mail.google.com als auch gmail.com verwenden dieselbe IP-Adresse. Wenn Sie also eine Verbindung über SSL herstellen, muss der Google-Server wissen, welches Zertifikat verwendet werden soll. Standardmäßig wird das mail.google.com-Zertifikat zurückgegeben. Dies ist ein Problem, wenn Sie versuchen, WebFinger zu implementieren.
WebFinger erfordert, dass Sie https://gmail.com/.well-known/host-meta
abrufen, um die LRDD-Informationen zu erhalten. Aus Sicherheitsgründen ist es jedoch wichtig, die SSL-Zertifikatsinformationen zu überprüfen.
Da Google in diesem Fall das standardmäßige mail.google.com-Zertifikat bereitstellt, schlägt SSL post_connection_check
fehl. Die richtige Lösung wäre hier, Server Name Indication für Net::HTTP
zu aktivieren, aber mir ist nicht klar, wie man das mit den Ruby-Bindings für OpenSSL arbeiten kann. Hat noch jemand eine Idee?
Sie sollten das Problem sehen können, indem Sie Folgendes ausführen:
%Vor%Ich habe auch einen Kern erstellt, der das Problem mit einer früheren Version von curl und OpenSSL zeigt:
Für die SNI-Unterstützung benötigen Sie eine neuere OpenSSL-Version (0.9.8f mit --enable-tlsext
oder 0.9.8j oder später) und rufen OpenSSL::SSL::SSLSocket#hostname = 'hostname'
vor SSLSocket#connect
auf. Net::HTTPS
unterstützt SNI noch nicht und open-uri nicht.
Beim Auschecken des httpclient -Entwicklungsrepositorys sollte SNI unterstützt werden.
Lass es mich wissen, wenn du bald ein veröffentlichtes Juwel brauchen wirst ...