IIS 7 이상 Application Request Routing 에서 SSL 리버스 프록시 설정하려면?

뭐.. IIS 7 부터 ARR 이란 놈이 생겨서 리버스 프록시 역할 할 수 있다는건 IIS 좀 만져본 개발자나 관리자면 알 것이다.

그래서 HTTP 리버스 프록시 따는 법은 여기서 다루지 않겠다.

근데.. HTTP는 금방 해결되는데 HTTPS 는 어떻게 해결하냐.. 고민 많을 것이다.

나같은 경우는 git 서버가 가상 리눅스에 있는데 80번과 443 포트가 IIS에 물리고 외부접속이 IIS이니 ARR을 쓸 수밖에 없는 상황이다.

그래서 GITLAB 앱을 ARR에 물려서 외부에서 접속해야 하는 상황인데. 어떻게 하냐?

먼저 공통 사항은 Default Web Site 또는 아무 사이트 하나 만들어서 도메인 집어넣고 https 스키마로 간 다음 인증서 선택하여 가는 루트다. 이제 2가지 경우로 간다.

  1. 공식 인증서를 구입하여 사용한 경우

GITLAB 돌릴때 웹 서버는 nginx를 쓴다. 거기서 인증서 세팅을 하고..

IIS에서도 그 인증서를 가져오는데 IIS에서 인증서를 새로 등록할 수도 없다. 새로 등록하면 또 인증서 사야 하니까.

어자피 같은 도메인 쓸건데 고생하지 말고 pfx 파일로 변환해서 IIS -> 인증서 관리에서 가져오기 하자.

Default Web Site 또는 아무 더미 사이트 만들어서 스키마는 https 도메인은 인증서에 동봉된 도메인 하고 바인딩 하나 만들고 인증서 선택할때 gitlab 에 쓰던 인증서 사용하면 된다. 그러면 그 도메인으로 접속시 인증서가 동일하게 설정된다.

공식 인증서는 신뢰된 루트 기관이 대부분이기 때문에 별도로 루트 인증서 등록하는 등의 번거로운 과정 없이 IIS 에서 HTTPS 요청 실행이 잘 된다.

아니면 IIS 로 인증서 등록하고 구입하여 승인받은 다음 pfx로 내보내기하여 리눅스 nginx 세팅할때 pfx 에서 추출해서 써도 된다.

근데 gitlab 에 공식 인증서 깔았는데 윈도우에 자체서명같은 사설 인증서 깔면 얄짤없이 당신 웹사이트 누가 신뢰하겠나.

  1. 사설 인증서 (또는 자체서명 인증서)

이거 좀 골치아픈데.. 이거 때문에 3시간 고생했지만 방법은 의외로 간단했다.

nginx 에서 사설 인증서 중 cer 파일을 ARR 있는 윈도우 서버로 가져온다.

그리고 더블클릭하여 인증서를 설치하는데, 반드시 “로컬 컴퓨터” 에 “신뢰할 수 있는 루트 인증서” 에다가 설치해야 한다.

왜냐면 IIS 도 인증서 확인하고 진행하기 때문인데, 그냥 이과정 안거치고 ARR에서 HTTPS를 요청하면 502 오류를 내뿜는다.

그리고 Default Web Site 또는 아무 더미 사이트 만들어서 바인딩을 https 로 원하는 도메인으로 하고,

인증서를 윈도우 자체서명 인증서로 해도 상관없고, 해당 도메인으로 등록한 공식 인증서 써도 된다.

재밌는거는 일단 요청하면 ARR이 먼저 받아들이기 때문에 윈도우 서버에 설치된 인증서를 브라우저에서 받아들인다.

그래서 gitlab 에다가 사설인증서 깔고 윈도우에다가 공식인증서 써도 되긴 한데 그닥 좋은 방법은 아니다.

왜냐면 git 프로토콜은 얘기가 다르기 때문이다. 왠만하면 사설이면 사설, 공인이면 공인 통일하도록 하자.

composite / 2013년 7월 23일 / 미분류

답글 남기기

Your email address will not be published / Required fields are marked *