Nginx使用ssl模組配置HTTPS

2021-10-23 08:37:10 字數 2550 閱讀 2655

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

#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 // 私鑰簽名

至此證書已經生成完畢,下面就是配置nginx

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。可以通過以下步驟生成乙個簡單的證書 首先,進入你想建立證書和私鑰的目...