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証明書を提供するため、SSLpost_connection_check
は失敗します。ここでの正しい解決策は、のサーバー名表示を有効にすることですがNet::HTTP
、OpenSSLのRubyバインディングでそれを機能させる方法は私にはわかりません。他の誰かがアイデアを持っていますか?
次のコマンドを実行すると、問題を確認できるはずです。
require 'open-uri'
open('https://gmail.com/.well-known/host-meta') { |f| f.read }
また、以前のバージョンのcurlとOpenSSLを使用して問題を示す要点を作成しました。