Unterstützung von Servernamen in Net :: HTTP?

8

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:

Ссылка

    
Bob Aman 13.01.2011, 21:55
quelle

2 Antworten

8

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 ...

    
NaHi 14.01.2011, 05:29
quelle
6

Ruby 2.0 wird das TLS SNI (Server Name Indication) Problem beheben:

von net / http ..

%Vor%

Damit dies in 1.9.2 (oder höher) funktioniert   Wenden Sie einen ähnlichen Patch auf net / http an

%Vor%

siehe auch: Ссылка Ссылка

    
michael bisignani 29.03.2013 19:41
quelle

Tags und Links