1. 程式人生 > >nginx配置將http請求轉發支援ssl雙向認證https請求的正向代理

nginx配置將http請求轉發支援ssl雙向認證https請求的正向代理

一、引言

nginx 是否支援將http請求轉發為https支援ssl雙向認證,網上沒什麼用例可以參考,查詢各大開發運維社群了下有幾種說法

  • 支援:
  • 不支援:
  • 不清楚家祭不忘告乃翁:

N多種方法,按照以上支援的小夥伴的說法,一種種去嘗試(雖然發現各種不合理,完全沒有涉及到客戶端金鑰對的使用的說法的),但是還是堅定的一種種去嘗試了,做法都圍繞著以下幾個關鍵

  • retrun 301
  • rewrite
  • listen 443 ssl;
    ssl_certificate www.example.com.crt;
    ssl_certificate_key www.example.com.key;

然而我發現,上面說的都不是做為支援SSL雙向認證的正向代理

  • retrun 301
  • rewrite

以上的做法是請求重定向,並沒有起到多大作用

  • listen 443 ssl;
    ssl_certificate www.example.com.crt;
    ssl_certificate_key www.example.com.key;

    此類配置是Ngnix配置一個https server,證書金鑰對配置的是服務端的證書,並不是作為客戶端代理的配置

  • ssl_client_certificate on;
    ssl_client_certificate ca.cer;

    此類配置的是Nginx的https server要求進水SSL客戶證書認證,也就算此服務要求進行SSL雙向認證,ca.cer是簽發客戶證書的CA證書,用來驗證客戶證書。

proxy_pass 這個是代理配置項是正確的做法,然而網上並沒有相關ssl雙向認證的使用用例

二、發掘官方文件

沒有相關使用案例就自己上官方文件發掘,檢視ngx_http_proxy_module的相關配置

發現以下配置專案

  • proxy_ssl_certificate
  • proxy_ssl_certificate_key

毫無疑問這個就是我們要尋找的配置內容,配置客戶端證書金鑰對的配置專案,在本地開啟一個要求進行ssl雙向認證的的https server,生成好相關證書和金鑰,進行測試

    server {
        listen       0.0.0.0:9999;
        #server_name localhost;
        access_log  off;
        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_redirect    off; 
            proxy_ssl_certificate        certs/client.cer;
            proxy_ssl_certificate_key    certs/client.key;
            proxy_pass   https://127.0.0.1:8443$request_uri;
        }
    }

三、測試用例

curl -d 'params=aaa' http://127.0.0.1:9999/index.json

有正確返回,測試成功

相關推薦

nginx配置http請求轉發支援ssl雙向認證https請求正向代理

一、引言 nginx 是否支援將http請求轉發為https支援ssl雙向認證,網上沒什麼用例可以參考,查詢各大開發運維社群了下有幾種說法 支援: 不支援: 不清楚家祭不忘告乃翁:

nginx 配置顯示http請求時間+日誌按日期自動切割備份+加入黑名單

1.配置nginx裡面的配置檔案nginx.conf,按照如圖所示開啟記錄http請求時間 儲存配置退出後重啟nginx 然後訪問nginx,開啟logs目錄下的access.log檔案會發現多了一列(單位為秒),如下圖紅框中所示: 2.配置日誌自動切割且備份功

nginx配置多端口轉發

nginx[root@iscsid conf]# cat nginx.confuser nginx nginx;worker_processes 8; error_log /opt/nginx/logs/nginx_error.log crit;pid /opt/nginx/logs/ng

nginxhttp跳轉到https

connect name cti cipher proxy encrypt soc cert 使用 #websoceket 使用map map $http_upgrade $connection_upgrade { default upgrade;

談談Nginx配置pathinfo對ThinkPHP5的支援

轉自: http://blog.csdn.net/u013703963/article/details/53857378 對於ThinkPHP的URL訪問路勁如:http://localhost/index.php/Index/BlogTest/read,原先的Ngin

nginx配置ssl雙向認證詳解

nginx中配置ssl雙向認證詳解 需求說明:公司內部一些業務系統對安全性要求比較高,例如mis、bi等,這些業務系統只允許公司內部人員訪問,而且要求瀏覽器要安裝證書登入,對公司入職有需求的人員開通證書,流失的人員登出證書。 一、首先修改openssl配置的引數  ##沒安

nginx配置檔案http、server、location指的是什麼?

http:全域性配置 server:虛擬主機 location:是用來為匹配的 URI 進行配置 Location是Nginx中的塊級指令(block directive), 通過配置Location指令塊,可以決定客戶端發過來的請求URI如何處理(是對映到本地檔案還是

ServletRequest HttpServletRequest 請求方法 獲取請求引數 請求轉發 請求包含 請求轉發與重定向區別 獲取請求頭欄位

ServletRequest 基本概念 JavaWeb中的 "Request"物件  實際為   HttpServletRequest  或者  ServletRequest,   兩者都為介面 伺服器接收請求後,將請求資料進行物件封裝 功能大致分類

C# https雙向認證,"請求被中止: 未能建立 SSL/TLS 安全通道"解決辦法

最近的專案中用到了呼叫https的介面的功能,編寫出程式後在我自己的電腦上執行沒有問題,但是在同事的電腦上和服務上都沒有辦法正常執行,提示“請求被中止: 未能建立 SSL/TLS 安全通道”,最後在專案經理的幫助下和網上查找了大量的資料,以及做了大量的測試下終於解決了問題,所

如何新增SSL證書實現https請求

前言 證書申請 資料完善 域名申請 證書配置 新增域名解析

利用mina框架進行ssl雙向認證連結

再上一篇中我已將建立好了證書,現在開始進行測試建立的證書有沒有用,先建立一個maven專案目錄結構如下 我們這裡是進行的雙向測試,如果想進行單項測試,也就是伺服器端不驗證客戶端的身份(關於ssl的原理可以自行百度瞭解)等會再說,改一個配置就行. 先引入pom檔案: <p

PKI學習之路(五)-----------------------SSL雙向認證日誌分析

根據上一篇的執行結果,我們根據它的日誌分析互動的過程 "C:\Program Files\Java\jdk1.8.0_161\bin\java.exe" "-javaagent:D:\IntelliJ IDEA 2018.1.5\lib\idea_rt.jar=52038:D:\IntelliJ

PKI學習之路(四)-----------------------SSL雙向認證

專案地址:https://github.com/gongxianshengjiadexiaohuihui/PKI/tree/master/ssl 上一篇 我們講了如何用java自帶的keytool工具生成數字證書,我們需要準備兩個證書,一個是server的一個是client的 &

SSL握手通訊詳解及linux下c/c++ SSL Socket(另附SSL雙向認證客戶端程式碼)

SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網路通訊提供安全及資料完整性的一種安全協議。TLS與SSL在傳輸層對網路連線進行加密。   安全證書既包含了用於加密資料的金鑰

使用Httpclient實現SSL雙向認證

1、生成伺服器端證書 Java程式碼 keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass pa

Android JSSE實現SSL雙向認證(阻塞模式及非阻塞模式)

      File pfxFile = new File(mCertPath, "ca.pfx");                try {            /*Android支援BKS PKCS12的keystore,不支援JKS,預設為BKS*/            //ksKeys = Ke

SSL雙向認證(一)

2. 建立CA私鑰 openssl genrsa -out E:/Myca/ca-key.pem 1024 3. 建立證書請求 openssl req -new -out E:/Myca/ca-req.csr -key E:/Myca/ca-key

Openssl建立SSL雙向認證連線原始碼

 (作者:陳波,2011-11-16,轉載請註明 Form:http://blog.csdn.net/jinhill/article/details/6979200)  #include "stdio.h" #include "string.h" #include "o

SSL雙向認證以及證書的製作和使用-https+客戶端身份驗證

客戶端認證伺服器: 正規的做法是:到國際知名的證書頒發機構,如VeriSign申請一本伺服器證書,比如支付寶的首頁,點選小鎖的圖示,可以看到支付寶是通過VeriSign認證頒發的伺服器證書: 我們用的操作系統(windows, linux, unix ,android, ios等)都預置了很多信任的根證

OpenFire開啟SSL雙向認證

準備工作 1.1:安裝JDK,配置環境變數,保證keytool工具可用 1.2:進入:openfire安裝目錄/resources/security資料夾 準備伺服器證書 伺服器金鑰庫對應為keystore 2.1:改變keystore預設密碼 keytool-storep