OpenSSL 版本差異造成 HTTPS 出問題

[華語, cmn-Hant-TW]

新灌好的 FreeBSD 10 機器上設定好 apache,要用 https 提供 svn 服務,結果在某些機器上吃到這樣的問題
svn: E120171: Error running context: An error occurred during SSL communication

原因不明,有趣的是有問題的那幾台機器用 svn 1.7 + neon 的話似乎是可用的,但是 svn 1.8 + serf 就炸掉了。
再測試一下發現也不是每個軟體都會有問題,curl 活得好好的,w3m (文字模式的網頁瀏覽器) 連線就炸掉了,吃到的錯誤訊息長這樣:
SSL error: error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)

上網找找,看到了這篇這篇這篇,大致上有個底。主要是 OpenSSL 0.9.8 的 Client 不能正確處理 OpenSSL 1.0.0 丟出來的 SNI 警告訊息,所以就炸了。要解決的話要嘛就是把 Server 降級,要不就把 Client 升級,不管怎麼弄都是大工程,所以就看有沒有局部性的處理方法,也就是至少讓 OpenSSL 1.0.0 不要噴錯誤訊息就好。

後來發現其實也不算太麻煩,就把 apache 的設定檔 ServerAlias 的地上加上所有可能連到這台伺服器的方式通通加上去,包括 domainname 跟 ip,如果有透過防火牆提供服務那防火牆的 domainname 或 ip 也要加上,這樣用戶端只要用這個清單上的名字連就不會再吃錯誤訊息了。

Leave a Reply

Your email address will not be published. Required fields are marked *