https(hyper text transfer protocol secure),是一種基於ssl/tls的http,所有的http資料都是在ssl/tls協議封裝之上進行傳輸的。https協議是在http協議的基礎上,新增了ssl/tls握手以及資料加密傳輸,也屬於應用層協議。
nginx希望伺服器與客戶端之間傳輸內容是加密的,防止中間監聽洩露資訊,但是去證書服務商申請證書又不合算,所以自己給自己頒發證書,忽略掉瀏覽器的不信任警報即可。
centos系統預設情況下ssl模組並未被安裝,如果要使用該模組則需要在編譯時指定–with-http_ssl_module引數,安裝模組依賴於openssl庫和一些引用檔案
首先確保機器上安裝了openssl和openssl-devel
#yum -y install openssl然後就是自己頒發證書給自己#yum -y install openssl-devel
#cd /usr/local/nginx/conf至此證書已經生成完畢,下面就是配置nginx#openssl genrsa -des3 -out server.key 2048 // 生成私鑰證書
#openssl req -new -key server.key -out server.csr
#openssl rsa -in server.key -out server_nopwd.key // 解密後的私鑰
#openssl x509 -req -days 3650 -in server.csr -signkey server_nopwd.key -out server.crt // 私鑰簽名
server然後重啟nginx
/etc/init.d/nginx restart
錯誤與解決
如果出現「[emerg] 10464#0: unknown directive "ssl" in /usr/local/nginx-0.6.32/conf/nginx.conf:74」則說明沒有將ssl模組編譯進nginx,在configure的時候加上「--with-http_ssl_module」即可^^
至此已經完成了https伺服器搭建,但如何讓瀏覽器信任自己頒發的證書呢?
今天終於研究搗鼓出來了,只要將之前生成的server.crt檔案匯入到系統的證書管理器就行了,具體方法:
控制面板 -> internet選項 -> 內容 -> 發行者 -> 受信任的根證書頒發機構 -> 匯入 -》選擇 server.crt
實戰操作(推薦)
1. 生成證書
可以通過以下步驟生成乙個簡單的證書:
首先,進入你想建立證書和私鑰的目錄,例如:
$ cd /usr/local/nginx/conf/
建立伺服器私鑰,命令會讓你輸入乙個口令:
$ openssl genrsa -des3 -out server.key 2048
建立簽名請求的證書(csr):
$ openssl req -new -key server.key -out server.csr
在載入ssl支援的nginx並使用上述私鑰時除去必須的口令:
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key
2. 配置nginx
最後標記證書使用上述私鑰和csr:
$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
修改nginx配置檔案,讓其包含新標記的證書和私鑰:
server
3. 重啟nginx
/etc/init.d/nginx restart
這樣就可以通過以下方式訪問:
(不需要新增 443 埠號)
另外,還可以加入如下**,實現80埠重定向到443
server
nginx.conf 例項配置
nginx 啟用 http2
nginx 要啟用http2,那麼版本要在1.90以上,
然後先配置443埠,最後把http 80埠請求**到443
# 設定非安全連線永久跳轉到安全連線
server
server
}
nginx配置使用ssl模組配置支援HTTPS訪問
生成自簽名證書 1 伺服器上安裝mod ssl和openssl yum install mod ssl openssl 2 生成金鑰 openssl genrsa out cyz.com.key 2048 3.生成證書請求檔案,執行之後會出現一大堆要輸入的東西,輸入之後就生成.csr的檔案了 cou...
nginx使用ssl模組配置HTTPS支援
本文 預設情況下ssl模組並未被安裝,如果要使用該模組則需要在編譯時指定 with http ssl module引數,安裝模組依賴於openssl庫和一些引用檔案,通常這些檔案並不在同乙個軟體包中。通常這個檔名類似libssl dev。可以通過以下步驟生成乙個簡單的證書 首先,進入你想建立證書和私...
nginx使用ssl模組配置HTTPS支援
預設情況下ssl模組並未被安裝,如果要使用該模組則需要在編譯時指定 with http ssl module引數,安裝模組依賴於openssl庫和一些引用檔案,通常這些檔案並不在同乙個軟體包中。通常這個檔名類似libssl dev。可以通過以下步驟生成乙個簡單的證書 首先,進入你想建立證書和私鑰的目...