金鑰生成並配置 Nginx系列 https配置

2021-10-16 03:45:48 字數 3335 閱讀 3900

有http了,為什麼需要https

主要原因是http資料傳輸時沒有對資料進行加密,所以導致資料不安全。而https在http上加了一層,對資料進行加密,這樣就保證了資料的安全性。防止傳輸的資料過程中被不法分子盜用、劫持、篡改,而導致資料資訊的洩露。

https協議的實現

對傳輸內容進行加密以及身份驗證

中間人偽造客戶端和服務端:(中間人可以偽裝成客戶端和服務端,中間人可以對資料進行劫持,不安全)

https的ca簽名證書:(服務端和客戶端通過實現約定好的證書進行認證,都會對證書進行校驗,所以中間人沒法劫持資料,故安全)

0x01:先驗證nginx安裝情況

在【nginx系列:nginx原始碼安裝】 文章中,知道安裝nginx時,必須首先安裝openssl openssl-devel依賴 模組,而這兩個模組就是https需要使用者的類庫;所以毫無疑問安裝nginx時,linux系統肯定安裝了這兩個模組;

nginx的https需要安裝with-stream_ssl_preread_module目錄,在nginx的原始碼目錄執行以下命令,可以看出nginx預設並不會安裝stream_ssl_preread_module模組的,需要重新編譯安裝一下

安裝一下stream_ssl_preread_module模組

./configure --prefix=/usr/local/nginx --user=nginx  --group=nginx --with-http_secure_link_module --with-http_stub_status_module --with-stream_ssl_preread_module--with-http_ssl_modulemakecd objs/mv nginx /usr/local/nginx/sbin/
0x02:生成秘鑰和ca證書先進入nginx的安裝目錄,然後生成乙個目錄,存放金鑰和ca證書

cd /usr/local/nginx/conf/mkdir httpskeyscd httpskeys
先看下openssl命令的基本用法

基本語法:openssl genrsa [args] [numbits]說明:args1 對生成的私鑰檔案是否要使用加密演算法進行對稱加密:     -des : cbc模式的des加密     -des3 : cbc模式的3des加密     -aes128 : cbc模式的aes128加密     -aes192 : cbc模式的aes192加密     -aes256 : cbc模式的aes256加密 args2 對稱加密密碼    -passout passwords    其中passwords為對稱加密(des、3des、aes)的密碼(使用這個引數就省去了console互動提示輸入密碼的環節) args3 輸出檔案    -out file : 輸出證書私鑰檔案 [numbits]: 金鑰長度,理解為私鑰長度
使用如下命令生成key秘鑰

執行以上命令需要輸入金鑰key的密碼,這裡使用密碼:admin,最終在當前目錄生成乙個jesonc.key的金鑰檔案。

根據金鑰檔案jesonc.key生成證書簽名請求檔案jesonc.csr

執行命令的過程中需要根據提示輸入一些相關的資訊,最終會在當前目錄生成jesonc.csr檔案。生成證書簽名檔案(ca檔案),有效期設定為10年,這個有效期根據自己的要求設定。

openssl x509 -req -days 3650 -in jesonc.csr -signkey jesonc.key -out jesonc.crt
0x03:nginx配置httpsnginx配置https的基本語法如下

ssl開關:

配置語法:listen 443 ssl;  # 1.1版本後這樣寫
ssl證書檔案

配置語法:ssl_certificate file;預設狀態:-配置方法:http、server
ssl密碼檔案

配置語法:ssl_certificate_key file;預設狀態:ssl off;配置方法:http、server
在server模組新增如下配置

listen       443 ssl;        server_name  localhost;        ssl_session_cache   shared:ssl:10m;        ssl_session_timeout 10m;        ssl_certificate /usr/local/nginx/conf/httpskeys/jesonc.crt; # 證書路徑        ssl_certificate_key /usr/local/nginx/conf/httpskeys/jesonc.key; # 請求認證 key 的路徑

啟動nginx

啟動nginx時需要輸入密碼,這時因為生成證書簽名請求檔案(csr檔案)在a challenge password時我輸入了密碼。這個密碼可以不輸入。

驗證是否可以訪問,雖然目前自簽名的證書已經不能使用;但是nginx的https大致是這樣配置的。

生成測試使用ssl證書並配置到nginx

可生成csr檔案和key檔案。2 將生成證書儲存至本地 可通過notepad 等文字工具儲存 3 利用openssl工具生成crt證書 安裝openssl工具後通過如下命令可將csr和key檔案生成crt檔案 openssl x509 req days 1800 in cert.csr signke...

Docke部署nginx並配置nginx

docker pull nginx 二 在宿主機中建立掛在目錄 mkdir p data nginx 三 在掛在目錄下新建配置檔案 四 將nginx容器對映在宿主機80埠 docker run name my nginx d p 80 80 v data nginx conf nginx.conf ...

Nginx系列 https配置

有http了,為什麼需要https 主要原因是http資料傳輸時沒有對資料進行加密,所以導致資料不安全。而https在http上加了一層,對資料進行加密,這樣就保證了資料的安全性。防止傳輸的資料過程中被不法分子盜用 劫持 篡改,而導致資料資訊的洩露。https協議的實現 對傳輸內容進行加密以及身份驗...