nginx多站點,ssl偏愛第一個證書

一個老舊的系統上,部署了nginx及php,今天啓用新的ssl證書,在nginx上做了設置,執行nginx -t語法檢查沒有問題。但重載nginx以後,瀏覽器訪問站點失敗,提示證書問題,查看證書,確是同一個nginx下另外一個站點的證書。

再查那個站點的配置,也啓用的自己的ssl證書,但這個證書早過期了。於是諮詢其它人,問能不能臨時把這個ssl配置給取消掉,反正也是過期的證書,也沒啥用。再保證不影響其它業務的前提下,我把配置文件(nginx主配置文件以include形式包含單獨的文件,不是那種include *.conf,我最反對這樣寫)做好備份,接着把監聽443端口的配置稀里嘩啦全部幹掉。重載nginx,再訪問站點,還是不行,但證書變了,變成另一個站點的證書。

在看主配置文件nginx.conf的include 行的順序,發現該站點是繼承第一個站點的證書(按include 的順序),那好,我把這個不能訪問的站點的配置,寫到第一行。
nginx多站點,ssl偏愛第一個證書

重載nginx,果然變成自己的證書了,訪問也正常。

由此可以初步判斷,可能是nginx支持多站點證書的問題,拿nginx多站點證書做關鍵詞搜索,果然如我所猜測。需要nginx支持SSL SNI,默認的版本沒有顯示的支持,需要重新編譯nginx,由於目前不能停止業務,先算一卦,看哪天是黃道吉日,然後再夜間做計劃性維護。
nginx多站點,ssl偏愛第一個證書

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章