Calendar

十一月 2010
« 九月   四月 »
1234567
891011121314
15161718192021
22232425262728
2930  

Categories

Apache 從 2.2.12 開始支援 SNI

其實這資訊 lag 了一年多了吧 (現在都 2.2.17 了)。
前幾週被人問到 SSL 時丟相關資訊給他,
才發現 wikipedia 的 SNI 那頁更新過了:Server Name Indication

這功能是從 Apache 2.3 merge 回來的:#34607 - Support for Server Name Indication
設定範例可以參考 Apache 的 wiki:SSL with Virtual Hosts Using SNI
其實設定上沒什麼新東西要注意,
一切都恢復到過去設 SSL vhost 的方式即可。
最多就是記得要擺 NameVirtualHost *:443SSLStrictSNIVHostCheck off 這兩行吧。

說起來好像外國人流行用 MoinMoinWiki
像是 GCC WikiFreeBSD Wiki 都是用這套。
不清楚是因為有什麼便利性或功能性?
還是說單純就是因為偏好 Python 寫的東西?
找時間來玩玩看好了...
最近要忙著做 LLVM 的 trace 和 porting,
因為有簽萬惡的 NDA所以相關資訊不便公開。

總之因為 Apache 的 mod_ssl 已經原生支援 SNI 了,
所以這兩篇可以拿去丟了:
Multiple SSL NameVirtualHosts in Apache2
mod_gnutls 0.5.6 是地雷 (地雷?要炸就讓它繼續炸吧。I don't care.)
不過我沒有砍文章的習慣,所以就留個提示訊息在上面吧。

請注意,如果你的 FreeBSD 是 7.x 或更舊的版本,系統內建的 OpenSSL 是不支援 SNI 的。
如果你的 FreeBSD 不是 8.x 以上的版本又想使用這功能,請自己找方法解決。
從 ports 裡安裝 OpenSSL 1.0.0 是一個方法,不過也許會遇到各種未知的意外狀況
  • Gao

    你好, 在apache2的文档里面,有一段:
    The first (default) vhost for SSL name-based virtual hosts must include TLSv1 as a permitted protocol, otherwise Apache will not accept the SNI information from the client and it will be as if the client did not support SNI at all.

    这个TLSv1应该怎么配置?
    因为我发现我配置多个VirtualHost后,后面几个VirtualHost依然是使用first的证书。

    我第一个的配置为:

    SSLEngine on
    SSLProtocol all +TLSv1
    SSLCertificateFile xxx
    SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
    SSLCACertificateFile /etc/apache2/ssl/ca.pem
    ServerName xxxxxxx
    ServerAlias xxxxxxx
    DocumentRoot /www

    • 我沒有特別去設定那個,照理說什麼都不用設定。
      真的說要設什麼的話,只有 httpd-ssl.conf 裡預設的這行要記得放過來:

      我沒試過不放會有什麼影響,只是純猜測。

      要是還是不行,試試使用 https://blog.tinlans.org 訪問本站。
      看看你取得的憑證是否為 *.tinlans.org,如果不是,表示你的 browser 未支援 SNI。

      如果你之前使用 mod_gnutls 可以正常運作,那也許真的 apache 上需要特別設什麼。
      我使用的是 FreeBSD 的 ports 安裝完後附帶的 apache 設定檔,SSL 相關的部分幾乎都沒怎麼變動。

  • Gao

    我发现问题所在了 :)

    我是用的firefox3.5的浏览器。 因为我自己一直在切换伺服器后台的证书文件,导致browser缓存了另外一个域名的证书,所以即使我F5也一直报错说证书不匹配。
    我重启了firefox就好了。 多谢~

    我还是从你这里才知道 Apache2.2支持SNI了,呵呵

    • 沒錯,在修改憑證嘗試新設定時,一定要記得關掉重開 browser。
      似乎大部分的 browser 都是這樣,IE 也不例外。

  • Pingback: Apache 單一IP設定多個HTTPS虛擬網站 | C瓜農場()