티스토리 뷰

728x90
반응형

  포스팅은 WebtoB ProxySSL, Apache 상호인증 설정 및 테스트에 대해 알아보겠습니다.


최근 사이버 공격은 대부분 홈페이지 보안 취약점을 악용한 해킹을 통해 정보시스템 파괴, 개인정보 유출, 홈페이지 위·변조 등의 피해를 발생시켜 정보시스템을 운영하는 기관의 대외 신뢰 하락과 많은 손실을 끼치고 있습니다. 이에 따라, 홈페이지 관리자는 홈페이지 및 웹 서버에서 발생하는 보안취약점에 대한 점검과 대응방안에 대해 숙지하고 미리 제거해 홈페이지 서비스의 안전성과 신뢰성을 확보하는 것이 매우 중요합니다. 본 가이드는 WebtoB를 기준으로 다른 웹 서버와 상호인증에 대한 설정 방법을 담고 있으며 해당 설정에 대한 옵션 설명이 일부 포함되어 있습니다. 해당 테스트는 WebtoB 4.1.8.1 이상 버전으로 테스트 되었습니다.

 

1.    테스트 인증서 생성

1.1 CertificateKey, CACertificateFile, PrivateKey

1. 테스트 인증서 성생 및 WebtoB 버전 안내 

x509 타입의 인증서를 통해 웹서버 간 상호 클라이언트 인증서를 요구할 수 있습니다.

테스트 인증서 및 내부 어플리케이션 체계를 위한 용도라면 굳이 돈을 주고 GPKI(Government Public Key Infrastructure) 와 같은 공개키 기반구조의 인증서를 발급 받으실 필요가 없습니다.

WebtoB 에서는 WBSSL을 통해 테스트 인증서를 생성하는 방법을 제공하고 있습니다. 다음 안내하는 WebtoB의 환경설정은 WebtoB 4.1.8.1 이상의 버전에서 수행이 가능하오니 주의바랍니다.

 

2. 테스트 인증서 생성 절차

1) WebtoB가 설치된 cmd 창에서 아래의 절차를 수행합니다. 인증서를 생성하는 방법은 다양하지만 본 문서에서는 아래의 내용을 따르도록 하겠습니다. 아래의 명령어로 하나의 키 쌍을 생성한 후 생성된 newcert.pem 파일에서 PublicKey PrivateKey의 내용을 분리합니다.

$>wbssl req -config C:\TmaxSoft\WebtoB4.1\ssl\wbssl.cnf -new -x509 -keyout newcert.pem -out newcert.pem -days 365



2) 위에서 생성한 newcert.pem 내용에서 -----BEGIN ENCRYPTED PRIVATE KEY----- 에서 -----END ENCRYPTED PRIVATE KEY----- 내용까지 별도의 파일로 NewPrivateKey.txt 로 저장합니다. 생성된 개인키를 통해 CA 인증서를 생성할 것 입니다. 아래의 명령어로 CA 인증서를 생성하기 위한 CSR 요청 파일을 생성합니다.

$>wbssl req -new -key NewPrivateKey.txt -out ca.csr



3) 생성된 ca.csr 은 미리 생성된 NewPrivateKey.txt 파일로 인증하여 ca.crt 즉 자가 인증된 셀프 인증서를 생성할 수 있습니다.

$>wbssl x509 -req -days 1280 -in ca.csr -signkey NewPrivateKey.txt -out ca.crt



4) 각 웹 서버의 CACertificateFile이 완성되었습니다. WebtoB의 설정에 다음의 환경설정에 추가될 것 입니다.

$>WebtoB 환경설정 경로 : $WEBTOBDIR\config\http.m



$>Apache 환경설정 경로 : $APACHE_HOME\conf\extra\httpd-ssl.conf



5) 서버인증서(server.crt)를 기존의 NewPrivateKey.txt 를 통해 요청파일(csr)을 만들고 해당 csr을 통해 서버인증서(server.crt)를 만들고 위에서 만들어진 ca.crt 인증서를 통해 자가 인증하는 방법을 안내합니다.

$>wbssl req -new -key NewPrivateKey.txt -out server.csr

$>wbssl x509 -req -in server.csr -out server.crt -signkey NewPrivateKey.txt -CA ca.crt -CAkey NewPrivateKey.txt -CAcreateserial -days 365



6) 개인키에 적용된 패스워드를 제거합니다. 본 문서는 윈도우 용으로 기술되었기 때문에 Standalone Apache 사용의 편의를 위해 패스워드를 제거합니다. 아래의 명령어를 입력해주지 않으면 아파치 기동 시 정의되지 않는 패스워드로 인해 기동이 실패합니다. 개인키 패스워드를 삭제하지 않고 기동하는 방법도 있기 때문에 다른 문서를 참조하여 설정하시기 바랍니다.

$>wbssl rsa -in NewPrivateKey.txt -out NewPrivatekey2.txt



7) 최종적으로 아래의 파일이 생성 되었습니다.

$>server.crt, ca.crt, NewPrivateKey2.txt



 

2.    환경설정

2.1 WebtoB, Apache 환경설정

1. WebtoB Apahce의 최종설정 요약

상호인증 설정을 위한 최소 절차

공공기술의 보안 향상이 대두되면서 각 제품군은 클라이언트를 식별하기 위한 강화된 보안기술을 제공합니다. 본 문서에서는 상호 인증을 위한 상호 인증 설정을 다루고 있기 때문에 그 밖에 SSL 설정에 대한 내용은 별도의 문서를 참조하시기 바랍니다.

 

2. WebtoB http.m 설정 및 Apache httpd-ssl.conf 설정

1) WebtoB 설정경로 : $(WEBTOBDIR)\config\http.m



2) Apache 설정경로 : $APACHE_HOME\conf\extra\httpd-ssl.conf


 


 

2.2 테스트 절차

1. 테스트 시나리오

본 문서에서는 브라우저를 통한 호출, 터미널을 통한 호출을 테스트합니다.

상호인증에 필요한 클라이언트 인증서를 보유한 WebtoB ReverseProxySSL 을 통해 서버가 되는 아파치의 CA 인증 동작을 수행하는지 또한 wbssl s_client -connect 명령어를 통해 정상적으로 SSL 세션이 맺어지는지 확인하도록 하겠습니다. 

2. 터미널을 통한 호출 테스트

1) wbssl을 활용한 호출

$>wbssl s_client -connect 127.0.0.1:8090(현재 WebtoB SSL 포트)로 요청을 통해 정상적으로 SSL 세션이 맺어지는지 확인합니다.



3. 웹 브라우저를 통한 아파치 호출

1) 익스플로러 호출

https://127.0.0.1:443 호출을 통해 클라이언트 인증서가 없는 웹부라우저에서 정상적으로 호출이 되는지 확인해 보았습니다. 브라우저는 클라이언트 인증서가 설치되어 있지 않기 때문에 해당 페이지에 접근할 수 없습니다.



2) 예외처리를 통한 접근 방법

웹서버에서 다음과 같은 방법을 통해 접근할 수 있습니다. 웹서버는 인증서를 선택적인 요구, 확고한 요구, 확고하게 요구하나 명시적인 요구가 필요없는 정책을 활용할 수 있습니다. 아래의 옵션을 ‘optional_no_ca’ 로 변경할 경우 접근할 수 있습니다. 다른 옵션은 별도의 문서를 참조하여 확인해보시기 바랍니다. 기존의 ‘SSLVerifyClient require’ 에서 위와 같이 변경할 경우 아래 그림처럼 클라이언트 인증서를 식별하지 않아도 해당 페이지에 접근이 가능함을 확인하실 수 있습니다.


 


3) WebtoB 호출을 통한 ReverseProxySSL의 정상적인 호출

현재 웹투비에는 8090 포트로 SSL이 걸려있고 /(root) URI가 올 경우 /ProxySSL/ 로 치환하여 아파치로 요청을 받아오는 형태입니다. 아파치의 기본 페이지인 ‘It Work’가 나오면 정상적으로 인증을 받아오는 것이라고 할 수 있습니다.



3.    주요설정 참조\

3.1 상호인증을 위한 주요설정

1. WebtoB 주요 환경설정



 

2. Apache 주요 환경설정



728x90
반응형