在搭建支援https的前端**伺服器時候,通常會遇到讓人頭痛的證書問題。根據https的工作原理,瀏覽器在訪問乙個https站點時,先與伺服器建立ssl連線,建立連線的第一步就是請求伺服器的證書。而伺服器在傳送證書的時候,是不知道瀏覽器訪問的是哪個網域名稱的,所以不能根據不同網域名稱傳送不同的證書。用過goagent的人都知道需要給瀏覽器匯入證書才能使用https正常登入twitter等**。然後,在瀏覽器裡訪問sni(server name indication)是為了解決乙個伺服器使用多個網域名稱和證書的ssl/tls擴充套件。一句話簡述它的工作原理就是,在連線到伺服器建立ssl連線之前先傳送要訪問站點的網域名稱(hostname),這樣伺服器根據這個網域名稱返回乙個合適的證書。目前,大多數作業系統和瀏覽器都已經很好地支援sni擴充套件,openssl 0.9.8已經內建這一功能,據說新版的nginx也支援sni。
github上有乙個小巧的支援sni的**伺服器,
我down下來,在乙個vps上編譯(需要安裝pcre的開發庫),寫了乙個簡單的配置檔案,把所有訪問443埠的https請求都進行**。啟動sni_proxy之後,修改本地的hosts檔案,把twitter.com對映為伺服器的ip位址,比如我的是
184.82.206.107 twitter.com
看到木有,這是活生生的twitter的證書。
nginx 同乙個IP上配置多個HTTPS主機
最近公司網域名稱更變,同時,又要新舊網域名稱同時執行。那麼,對於https的網域名稱在同乙個ip上如何同時存在多個虛擬主機呢?遂,檢視了下nginx手冊,有這麼一段內容,如下 如果在同乙個ip上配置多個https主機,會出現乙個很普遍的問題 1 2 3 4 5 6 7 8 9 10 11 12 13...
nginx 同乙個IP上配置多個HTTPS主機
最近公司網域名稱更變,同時,又要新舊網域名稱同時執行。那麼,對於https的網域名稱在同乙個ip上如何同時存在多個虛擬主機呢?遂,檢視了下nginx手冊,有這麼一段內容,如下 如果在同乙個ip上配置多個https主機,會出現乙個很普遍的問題 server server server server 那...
乙個s的力量 http與https
url 統一資源定位符 作用 用來表示從網際網路上得到的資源位置和訪問這些資源的方法。一般形式 協議 主機 埠 路徑 我們會使用這樣的形式訪問網路上的資源呢?那麼為什麼會使用不同的協議呢?這是因為各有所用,都有自己的優勢,正如我們的資料會有不同的分類,在不同的用途我們就使用不同的協議。我們使用的協議...