關鍵詞
SSL ?HTTPS Nginx ?AMH面板
背景
在建站過程中遇到如下需求:需要網站支持HTTPS訪問,因此需要申請SSL證書,并且安裝使用
為什么需要HTTPS?
簡單來講,HTTP是明文傳輸的,也就意味著,介于發送端、接收端中間的任意節點都可以知道你們傳輸的內容是什么。這些節點可能是路由器、代理等。相對來說安全性較低。常見的運營商劫持就是利用了HTTP協議傳輸中的不足。
HTTPS則擁有更高的安全性,是以安全為目標的HTTP通道,簡單講是HTTP的安全版。之前HTTPS在金融購物網站使用比較多,但是現在隨著用戶愈發重視網絡安全,很多平臺開始轉向使用HTTPS。目前Google,Apple,Facebook等已經完全支持HTTPS,甚至支持HTTP 2.0。
如何申請SSL證書?
國內很多渠道可以獲取免費的SSL證書,比較主流的有騰訊云,阿里云,BAE(百度開放云),我因為域名和服務器大多都在阿里云(且比較窮),所以選擇了阿里云的免費SSL證書服務。
申請地址:點我
每個阿里云賬號可以申請可以申請10個免費SSL證書,每個證書對應一個域名。
申請完成后填寫相關信息,一般十分鐘左右即可完整證書簽發,注意填寫信息的時候盡量填寫真實信息,否則可能會影響審核。
證書簽發之后,點擊相應證書后的“下載”,即可進入下載頁,選擇對應主機環境,下載所需的證書文件,還需安裝,安裝完成即可實現HTTPS訪問。
環境配置說明:
因為當時自己安裝Nginx+PHP+MySQL環境的時候數據庫密碼遇到一些問題,為了方便,直接使用了AMH面板。
環境如下:Nginx+PHP+MySQL,配合AMH面板
證書安裝
阿里云官方提供了各環境配置下的證書安裝說明,上傳證書文件至Nginx安裝文件根目錄,然后修改nginx.conf配置文件即可。
一般Nginx配置文件位于usr/local/nginx/conf文件夾下,但是因為我是用的是amh面板,nginx.conf文件include了單獨的主機配置文件
比如我的是/home/wwwroot/lnmp_movie/vhost/*.conf,直接進入這個目錄修改即可。
官方提供的修改配置如下:
ssl_certificate和ssl_certificate_key對應的地址是可以更換的,示具體上傳的地址而定。
使用阿里云官方提供的配置,修改完配置文件,重啟Nginx之后,使用HTTPS鏈接已經可以訪問,但是如果不使用HTTPS而使用HTTP訪問,出現了一個報錯。
The plain HTTP request was sent to HTTPS port
網上查找之后有很多種解決辦法,其中幾種試了之后并不能解決問題,后來我試著修改了一下ssl on代碼,配置改成如下,重啟Nginx之后HTTP訪問已經不再報錯(具體原理我也講不清
整體修改后的配置如下,比較重要的地方已經使用紅框標注,其他配置文件與ssl無關。
說明
因為我只需實現HTTPS鏈接可訪問即可,不需要全站均使用HTTPS,所以配置到這里就夠了。若還需配置全站必須使用HTTPS,網上有很多教程可供參考。
測試
http://www.laotie.tv/
https://www.laotie.tv/