https如何通過nginx完成雙向認(rèn)證轉(zhuǎn)發(fā)
https 單向認(rèn)證和雙向認(rèn)證
具體可以看看這篇文章 https雙向認(rèn)證,寫的很詳細(xì)和形象
- 單向認(rèn)證
- 雙向認(rèn)證
生成自簽證書、服務(wù)端證書和客戶端證書
具體可以看這篇文章 Nginx配置ssl雙向認(rèn)證
1.CA 與自簽名
# 生成CA私鑰,會(huì)讓你輸自定義密碼(例: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文件),會(huì)讓你輸自定義密碼(例:111111) openssl genrsa -aes256 -out server.pem 1024 # .pem文件轉(zhuǎn)換.key文件 openssl rsa -in server.pem -out server.key # 輸入Server密碼:111111 # 生成簽發(fā)請(qǐng)求 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文件),會(huì)讓你輸自定義密碼(例:222222) openssl genrsa -aes256 -out client.pem 1024 # .pem文件轉(zhuǎn)換.key文件 openssl rsa -in client.pem -out client.key # 222222 # 生成簽發(fā)請(qǐng)求 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 # 使用瀏覽器訪問時(shí),需要生成p12格式的客戶端證書,會(huì)讓你輸入自定義密碼(例:123456) openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
服務(wù)端使用 https 進(jìn)行通信,并使用雙向認(rèn)證
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,進(jìn)行轉(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; } }
測(cè)試
- 直接使用瀏覽器訪問 https://loalhost:7000/v1 是獲取不到數(shù)據(jù)的
- 使用 http://loalhost:8080/api 是可以獲取到數(shù)據(jù)的
- 或者瀏覽器安裝 client.p12 證書(安裝時(shí)輸入的密碼是 p12 密碼:123456)也是可以通過 https://loalhost:7000/v1 獲取數(shù)據(jù)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- nginx強(qiáng)制使用https訪問的方法(http跳轉(zhuǎn)到https)
- 詳解NGINX訪問https跳轉(zhuǎn)到http的解決方法
- 如何通過nginx負(fù)載均衡跳轉(zhuǎn)https
- 使用nginx方式實(shí)現(xiàn)http轉(zhuǎn)換為https的示例代碼
- Nginx域名轉(zhuǎn)發(fā)https訪問的實(shí)現(xiàn)
- Nginx將http轉(zhuǎn)換成https的詳細(xì)過程
- Nginx實(shí)現(xiàn)http自動(dòng)跳轉(zhuǎn)到https
- Nginx配置HTTP強(qiáng)制跳轉(zhuǎn)到HTTPS的解決辦法
- nginx配置將HTTPS請(qǐng)求轉(zhuǎn)換成HTTP的方法實(shí)現(xiàn)
- Nginx強(qiáng)制跳轉(zhuǎn)Https(Http訪問跳轉(zhuǎn)Https)
- nginx實(shí)現(xiàn)http轉(zhuǎn)換為https的項(xiàng)目實(shí)踐
相關(guān)文章
Nginx如何實(shí)現(xiàn)pathinfo模式的方法詳解
pathinfo是偽靜態(tài)的一種,對(duì)于用過thinkphp的朋友們來(lái)說(shuō)應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于Nginx如何實(shí)現(xiàn)pathinfo模式的方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2017-09-09nginx界面管理工具之nginxWebUI?搭建與使用方法
本文主要介紹了nginx界面管理工具之nginxWebUI?搭建與使用方法2024-08-08nginx?gzip?動(dòng)態(tài)靜態(tài)壓縮詳解
這篇文章主要為大家介紹了nginx?gzip?動(dòng)態(tài)靜態(tài)壓縮實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Nginx如何配置Http、Https、WS、WSS的方法步驟
這篇文章主要介紹了Nginx如何配置Http、Https、WS、WSS的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05基于Nginx實(shí)現(xiàn)限制某IP短時(shí)間訪問次數(shù)
這篇文章主要介紹了基于Nginx實(shí)現(xiàn)限制某IP短時(shí)間訪問次數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12Nginx服務(wù)器做負(fù)載均衡反向代理的超級(jí)攻略
這篇文章主要介紹了Nginx服務(wù)器做負(fù)載均衡反向代理的超級(jí)攻略,包括緩存的相關(guān)設(shè)定以及負(fù)載均衡的一些常見問題的解決,極力推薦!需要的朋友可以參考下2015-08-08