nginx 설정 http 요청 전송 지원 ssl 양 방향 인증 https 요청 의 정방 향 에이전트

3135 단어 linuxnginxhttps
머리말
nginx 는 http 요청 을 https 지원 ssl 양 방향 인증 으로 전송 하 는 것 을 지원 하 는 지 여 부 를 지원 합 니 다.인터넷 에 참고 할 만 한 사례 가 없습니다.각 개발 운영 커 뮤 니 티 를 조회 한 결과 몇 가지 설 이 있 습 니 다.
지원:지원 하지 않 음:가 제 를 모 르 면 내 옹 에 게 알 리 는 것 을 잊 지 않 는 다https://www.bjornjohansen.no/redirect-to-https-with-nginx
N.여러 가지 방법 은 상기 에서 지원 하 는 파트너 의 말 에 따라 여러 가지 시도(여러 가지 불합리 성 을 발 견 했 지만 클 라 이언 트 키 의 사용 에 관 한 설 이 전혀 언급 되 지 않 았 습 니 다)하지만 확고 한 여러 가지 시 도 를 했 습 니 다.방법 은 다음 과 같은 몇 가지 키 를 중심 으로 합 니 다.
  • retrun 301
  • rewrite
  • listen 443 ssl; ssl_certificate www.example.com.crt; ssl_certificate_key www.example.com.key;
  • proxy_pass https:// host request_uri

  • 그러나 위 에서 말 한 것 은 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 https:// host request_uri

  • proxy_pass 이것 은 프 록 시 설정 항목 이 올 바른 방법 이지 만 인터넷 에 ssl 양 방향 인증 과 관련 된 사용 사례 가 없습니다.
    2.공식 문서 발굴
    관련 사용 사례 없 이 자체 공식 문서 발굴,ngx 보기http_proxy_module 관련 설정
    http://nginx.org/en/docs/http/ngx_http_proxy_module.html
    다음 설정 항목 발견
  • 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;
            }
        }
    

    3.테스트 사례
    curl -d 'params=aaa' http://127.0.0.1:9999/index.json

    정확 한 귀환,테스트 성공

    좋은 웹페이지 즐겨찾기