https如何通過nginx完成雙向認證轉(zhuǎn)發(fā)
更新時間:2024年11月19日 09:18:05 作者:darkeering
文章詳細介紹了HTTPS單向認證和雙向認證的概念,并提供了生成自簽證書、配置Nginx進行雙向認證的具體步驟,通過雙向認證,服務(wù)端和客戶端可以互相驗證身份,提升安全性,在測試過程中,使用瀏覽器訪問HTTPS接口時,需要安裝客戶端證書才能成功獲取數(shù)據(jù)
https 單向認證和雙向認證
具體可以看看這篇文章 https雙向認證,寫的很詳細和形象
- 單向認證
- 雙向認證
生成自簽證書、服務(wù)端證書和客戶端證書
具體可以看這篇文章 Nginx配置ssl雙向認證
1.CA 與自簽名
# 生成CA私鑰,會讓你輸自定義密碼(例:000000) openssl genrsa -aes256 -out ca.key 2048 # 制作CA公鑰/根證書 openssl req -new -x509 -days 3650 -key ca.key -out ca.crt # 輸入CA密碼:000000 # Common Name 隨意填寫(test.com);其它隨意
2.服務(wù)端證書(server.client server.key)
# 生成服務(wù)器私鑰(.pem文件),會讓你輸自定義密碼(例:111111) openssl genrsa -aes256 -out server.pem 1024 # .pem文件轉(zhuǎn)換.key文件 openssl rsa -in server.pem -out server.key # 輸入Server密碼:111111 # 生成簽發(fā)請求 openssl req -new -key server.pem -out server.csr # 輸入Server密碼:111111 # Common Name填寫自己的ip地址即可,其他隨意 # 用CA簽發(fā)證書 openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt # 輸入CA密碼:000000
3.客戶端證書(client.client client.key)
# 生成客戶端私鑰(.pem文件),會讓你輸自定義密碼(例:222222) openssl genrsa -aes256 -out client.pem 1024 # .pem文件轉(zhuǎn)換.key文件 openssl rsa -in client.pem -out client.key # 222222 # 生成簽發(fā)請求 openssl req -new -key client.pem -out client.csr # 輸入Client密碼:222222 # Common Name填寫自己的ip地址即可,其他隨意 # 用CA簽發(fā)證書 openssl x509 -req -sha256 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out client.crt # 輸入CA密碼:000000 # 使用瀏覽器訪問時,需要生成p12格式的客戶端證書,會讓你輸入自定義密碼(例:123456) openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
服務(wù)端使用 https 進行通信,并使用雙向認證
const express = require("express"); const https = require("https"); const fs = require("fs"); const app = express(); const PORT = 7000; const options = { key: fs.readFileSync("./ssl/server.key"), cert: fs.readFileSync("./ssl/server.crt"), ca: [fs.readFileSync("./ssl/ca.crt")], requestCert: true, rejectUnauthorized: true, }; https .createServer(options, app) .listen(PORT, () => console.log(`App listening on port ${PORT}!`)); app.get("/v1", (req, res) => res.send("Hello World!"));
配置 nginx,進行轉(zhuǎn)發(fā)
server { listen 8080; server_name localhost; location /api { proxy_ssl_certificate ssl/client.crt; proxy_ssl_certificate_key ssl/client.key; # client-pw.txt 里面是Client密碼:222222 proxy_ssl_password_file ssl/client-pw.txt; proxy_pass https://localhost:7000/v1; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
測試
- 直接使用瀏覽器訪問 https://loalhost:7000/v1 是獲取不到數(shù)據(jù)的
- 使用 http://loalhost:8080/api 是可以獲取到數(shù)據(jù)的
- 或者瀏覽器安裝 client.p12 證書(安裝時輸入的密碼是 p12 密碼:123456)也是可以通過 https://loalhost:7000/v1 獲取數(shù)據(jù)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- nginx強制使用https訪問的方法(http跳轉(zhuǎn)到https)
- 詳解NGINX訪問https跳轉(zhuǎn)到http的解決方法
- 如何通過nginx負載均衡跳轉(zhuǎn)https
- 使用nginx方式實現(xiàn)http轉(zhuǎn)換為https的示例代碼
- Nginx域名轉(zhuǎn)發(fā)https訪問的實現(xiàn)
- Nginx將http轉(zhuǎn)換成https的詳細過程
- Nginx實現(xiàn)http自動跳轉(zhuǎn)到https
- Nginx配置HTTP強制跳轉(zhuǎn)到HTTPS的解決辦法
- nginx配置將HTTPS請求轉(zhuǎn)換成HTTP的方法實現(xiàn)
- Nginx強制跳轉(zhuǎn)Https(Http訪問跳轉(zhuǎn)Https)
- nginx實現(xiàn)http轉(zhuǎn)換為https的項目實踐
相關(guān)文章
Nginx如何實現(xiàn)pathinfo模式的方法詳解
pathinfo是偽靜態(tài)的一種,對于用過thinkphp的朋友們來說應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于Nginx如何實現(xiàn)pathinfo模式的方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。2017-09-09nginx界面管理工具之nginxWebUI?搭建與使用方法
本文主要介紹了nginx界面管理工具之nginxWebUI?搭建與使用方法2024-08-08Nginx如何配置Http、Https、WS、WSS的方法步驟
這篇文章主要介紹了Nginx如何配置Http、Https、WS、WSS的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2021-05-05基于Nginx實現(xiàn)限制某IP短時間訪問次數(shù)
這篇文章主要介紹了基于Nginx實現(xiàn)限制某IP短時間訪問次數(shù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下2020-12-12