パスワードを忘れた? アカウント作成
175054 journal

dodaの日記: ウェブブラウザのSNI対応

日記 by doda

かなり前の話だが、elderwandさんの日記経由、この記事で、最近のApacheはSNI(Server Name Indication)に対応している事を知った。
すぐに試したかったのだけれど、忙しかったり体調を崩したりなどしていたせいでなかなか試せず、最近になってやっと試せた。

SNIを使う為には、以下のバージョンのApache/OpenSSLが必要。

  • Apacheのバージョンは2.2.12以降
  • OpenSSLのバージョンは0.9.8f以降

使っていたApacheは2.2.13だったのだが、FreeBSD 7.2Rのベースシステムに含まれるOpenSSLは0.9.8eだったのでこっちがアウト。
という事で ports から security/openssl をインストール。

sue@nagato% sudo portinstall security/openssl
  -略-
sue@nagato% /usr/local/bin/openssl version
OpenSSL 0.9.8l 5 Nov 2009

portsで入れたOpenSSLを使わせるため、Apacheも再インストール。

sue@nagato% sudo portupgrade -vvf apache-2.2.13

あ、2.2.14 になった。

設定は、普通に名前ベースのバーチャルホストを設定し、それぞれに対応する証明書を指定する。簡単。

Listen 443
NameVirtualHost *:443
SSLStrictSNIVHostCheck off
 
<VirtualHost *:443>
    DocumentRoot "/usr/local/www/data"
    ServerName www.example.org
    SSLEngine on
    SSLCertificateFile "/usr/local/etc/apache22/CERTS/www.cert"
    SSLCertificateKeyFile "/usr/local/etc/apache22/CERTS/www.key
      -略-
</VirtualHost>
 
<VirtualHost *:443>
    DocumentRoot "/usr/local/www/squirrelmail"
    ServerName mail.example.org
    SSLEngine on
    SSLCertificateFile "/usr/local/etc/apache22/CERTS/mail.cert"
    SSLCertificateKeyFile "/usr/local/etc/apache22/CERTS/mail.key
      -略-
</VirtualHost>

注意点としては、SNIに対応していないブラウザからもアクセスできるように、SSLStrictSNIVHostCheck offを設定する事。
この場合、SNIに対応していないブラウザでアクセスすると、最初のバーチャルホストの証明書が使われる。

設定後Apacheを再起動し、SNIに対応しているOpera 10.10を使ってアクセスしてみると…成功。
wwwは通常のコンテンツが、mailではSquirrelMailのログインページが表示され、どちらも正しい証明書が送られてきた。
次に、アドエスのOpera Mobileからアクセスすると…こっちからはダメ。mailの方にアクセスしてもwwwの証明書が送られてくる。
気になったので、他でも色々確認してみた。

WindowsXP
  対応
    Opera 8.54
    Opera 9.0
    Opera 10.10
    Firefox 3.5.5
  非対応
    Internet Eplorer 8
    Safari 4.0.4
    Google Chrome 3.0.195.38
 
FreeBSD
  対応
    Opera 10.10
    Firefox 3.5.5
    Lynx 2.8.7rel.1
  非対応
    Lynx 2.8.6rel.5
    w3m 0.5.2
 
Windows 7
  対応
    Opera 10.10
    Firefox 3.5.5
    Internet Explorer 8
    Safari 4.0.4
    Google Chrome 3.0.195.38
 
Windows Mobile 6 (Advanced/W-ZERO3[es])
  非対応
    Opera Mobile 8.7
    Internet Explorer Mobile
 
Wii
  非対応
    インターネットチャンネル
 
Playstation3
  非対応
    インターネットブラウザー

以下、気付いた点。

  • IE8, Safari4, Chromeは、WindowsXPではダメだけどWindows7ではOK。多分、OSの機能を使っているんだろうな。証明書ストアも共通だし。
  • Opera 8.54は最初うまくいかずに悩んだ。[設定] - [詳細設定] - [セキュリティ] - [セキュリティプロトコル]でTLS 1.1を有効にしたらOKになった。
  • Firefoxが暗号にCamelliaを使ってるなあ。
  • アドエスのOpera Mobile 8.7やWiiのインターネットチャンネル(Opera 9.3ベース)はダメなのか。対応していてもよさそうなんだけど。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

身近な人の偉大さは半減する -- あるアレゲ人

読み込み中...