티스토리 뷰

728x170

 포스팅에서는 SSL설치에 필요한 개념과 설정방법을 가이드합니다.


SSL은 인터넷 상거래에 필요한 개인정보를 보호하기 위한 개인정보 유지 프로토콜입니다.
SSL은 웹 제품뿐만 아니라 파일 전송 규약(FTP) 등 다른 TCP/IP 애플리케이션에 적용할 수 있으며, 인증 암호화 기능이 있습니다.

 

먼저 SSL(Secure Socket Layer) 개념에 대해 알아보겠습니다.

Netscape사에서 개발한 암호화 전송 프로토콜로 Certificate를 이용하여 서버와 클라이언트간의 인증을 다.

SSL은 Layer를 기반으로 하는 프로토콜로 데이터를 암호화하는 공개 Key와 암호화된 문을 해독하는 개인 Key가 쌍으로 구성됩니다.

개인 Key는 해독할 사람 본인이 가지고 있고, 공개 Key는 공개하여, 다른 사람들이 개인 Key의 소유자에게 메시지를 전할 때 그 공개 Key로 암호화해서 보내는 방식입니다.

이 방법에서 문제가 되는 것은 그 공개 Key가 정말로 사용자 본인의 것인가 아닌가 하는 점인데, 이를 확인하기 위해 공개 Key를 증명해주는 기관을 따로 두게 되며, 이를 인증기관(Certification Authority, CA)이라 합니다.


SSL로 접속하기 위해서는 80 port를 의미하는 "http" 대신에 443 port를 의미하는 https를 사용합니다.


WebtoB의 SSL은 어떤의미를 갖고 있으며, 어떻게 동작하는지 하나씩 살펴 보겠습니다.

TCP connection은 HTL 프로세스와 맺은 후, 이 connection을 HTH 프로세스에게 넘겨주면SSL Handshake과정을 통해 SSL통신을 준비합니다.

Client가 암호화된 요청을 HTH에게 보내게 되고 HTH는 암호화된 요청을 복호화 하고 요청헤더를 파싱하여 해당 서버프로세스(ex. htmls)가 요청을 처리하도록 합니다.

서버프로세스가 만들어낸 응답은 HTH에게 보내고 HTH는 암호화하여 Client에게 보낸다. 즉, SSL Handshake 및 암복화는 HTH가 모두 담당하고 있습니다.

 

그럼 SSL 통신 절차에 대해 상세히 살펴보겠습니다.

SSL은 암호화 하는 key와 복호화 하는 key가 다른 비대칭적 암호화 방식을 사용합니다. 인증서의 공개키를 기반으로 Session key를 만들고 해당 key를 이용해 Server와 Client간의 통신을 암호화 합니다.

 

먼저 Client는 자신이 사용할 수 있는 암호화 방식 등 정보를 Server에게 전송합니다. 일반적으로 많이 사용하는 SSL3.0, TLS2.0등이 있습니다.

Server는 전송 받은 내용 중 사용할 수 있는 방식을 선택한 정보와 인증서를 Clinet에게 전송합니다.

Client는 Server에게 받은 인증서의 신뢰 여부를 검사한 후 다운로드를 수행합니다. 인증기관의 신뢰도 및 조작여부, Time Valid 등을 확인하는 과정을 거칩니다. 인증서의 DNS Name 및 IP Address의 부합 여부를 판단하고 실제 브라우저에 인증서를 적용합니다.
Client는 서버로부터 받은 인증서에 입력된 공개 key를 추출하여 인증 간 사용할 수 있도록 준비합니다.

Client는 대칭 암호화 방식을 사용하기 위한 Session Key를 생성하고, 공개 Key로 Session key를 암호화해 Server로 전송합니다.

Server는 공개 key로 암호화된 Session key를 자신의 개인 Key로 복호화해 Session key 값을 얻어 냅니다. 이따 개인키로 생성한 공개키가 맞는지 확인하고 맞을 경우 https protocol로 연결을 승인합니다.

이후 HTTPS 통신은 Client와 Server가 전송할 Data를 Session key로 암/복호화 하는 대칭 key 기법을 사용합니다.

SSL을 사용하면 최초에 Server가 Client에게 대칭 key(Session key)를 전달 할때 다른 사용자가 key값을 훔치는 것을 막을수 있습니다.

(공개키로 암호화된 Session key는 Server의 개인 key로만 복호화 할 수 있기 때문입니다. Client는 key를 준 서버가 진짜라는 것을 공인기관에서 발급된 인증서를 통해 확인합다.)

 

다음으로 WebtoB의 SSL 설정에 대해 알아보겠습니다.
먼저 CSR을 생성합니다.

CSR(Certificate Signing Request) 이란SSL서버를 운영하는 회사의 정보를 인증기관으로 보내 인증서를 발급하기 위한 일종의 신청서입니다.


CSR 생성방법은 다음과 같습니다.

CA –newreq 명령어를 통해 CSR을 생성할 수 있습니다.

CSR 생성을 위해 입력해야 할 값은 다음과 같습니다.

먼저 개인키 암호를 입력합니다. 개인키 암호의 경우 추후 WebtoB를 기동할 때 물어보게 되는 정보로 기억하고 있어야 하는 정보입니다. 암호를 잃어 버렸을 경우 CSR을 재생성 해야 하니 반드시 기억하고 있어야 함을 유의합니다.

입력한 개인키 암호를 재 확인합니다.

다음으로 국가 코드를 입력한다. 한국의 경구 KR을 기본값으로 하며, Default값으로 명시되어 있습니다.

이후 시, 도, 구, 군을 입력한다.

인증서를 반영할 회사명을 입력합니다.

인증서를 사용할 부서명을 입력합니다.

인증 받을 도메인을 입력합니다.

마지막으로 전달받을 메일 주소를 입력합니다.


위 과정을 수행하면 이후 newreq.pem 파일이 생성됩니다.

# CSR 생성시 참고사항은 아래와 같습니다. 

Organization Name에는 인증서를 설치 할 사이트명(Common Name)에 해당하는 도메인의 등록정보에 기재된 회사명과 동일하게 입력해야 다.

사이트명에는 IP 주소, 포트번호, 경로명, 통신 protocol 등을 포함할 수 없습니다.

또한 CSR항목에는 특수문자를 넣을 수 없습니다.

 

인증서가 승인되면 전달 받은 내용 BEGIN CERTIFICATE에서 END CERTIFICATE까지 모든 문자를 복사하여 newreq.pem 파일에 넣습니다. 즉 비밀키와 인증서가 newreq.pem 파일에 존재하게 됩니다. 해당 파일을 인증서를 제공하는 기관에 전달하면 SSL 인증서를 제공해 줍니다.

 

다음으로 SSL 인증서 설정에 대해 설명하겠습니다.

인증기관으로부터 발급 받을 수 있는 인증서 종류는 아래와 같습니다. 

Single인증서는 기본적인 SSL로 신청한 도메인에 대해 인증하는 인증서입니다.

Wildcard 인증서는 서브 도메인 수에 상관없이 사용할 수 있는 인증서입니다. 

Multi 도메인 인증서는 한 인증서의 도메인 수가 최소 3개부터 인증기관에 따라 최대 25개에서 최대 100개 까지 등록 할 수 있는 인증서입니다.
물론 위 인증서 별 가격은 차이가 나기때문에 사이트에 맞는 인증서를 선택하여 발급받도록 합니다.

 

발급받은 인증서를 WebtoB에 반영하는 방법은 아래와 같습니다. 

WebtoB에서 SSL을 이용하기 위해서는 NODE 절이나, SSL을 이용하고 싶은 VHOST 절에서 SSL 항목을 설정해야 합니다.

SSL 태그를 사용하여 인증서를 반영합니다.

일반적으로 CertificateFile, CertificateKeyFile, CACertificateFile, CertificateChainFile 총 4개의 필드를 일반적으로 입력하여 사용합니다.

각각 개인키, 공개키, CA 인증서(상위 기관 확인 인증서), Chain(상위 기관에 대한 체인 정보)를 포함하고 있습니다.

상세하게 해당 파일이 어떠한 역할을 하는지 알아보겠습니다.

첫번째로 CertificateFile(필수항목)는 PEM 방식으로 인코딩된 서버의 인증서를 설정합니다. 만일 인증서가 암호화된 상태라면, 비밀번호를 물어봅니다.

두번째로 CertificateKeyFile(필수항목)는 PEM 방식으로 인코딩된 인증서의 개인 Key를 설정합니다. 

세번째로 CACertificateFile는 단일 CA(Certificate Agent) 인증을 대신해 주는 기업으로부터 사용자 인증을 받는 파일을 설정합니다. 

네번째로 CertificateChainFile는 서버 인증서(Certificate)의 인증서 연쇄(Certificate Chain)를 구성할 때 필요한, 상위 인증기관들(CAs) 의 인증서(certificate) 경로를 설정합니다.

 

기타 나머지 설정사항에 대해서는 WebtoB Manual을 참조하기 바랍니다.

위와 같이 ssl을 사용하는 Vhost를 추가한 후 JEUS Server와 연결하는 2가지 방법은 다음과 같습니다.

http로 업무를 처리하는 Server에 SSL 요청도 처리 할 수 있도록 추가합니다.
새로 추가한 SSL용 Server를 추가하고, JEUS에서 Webtob-listener를 추가해 해당 Server로 연결합니다.

 

SSL 인증서는 사이트 (Domain Base)의 인증 절차를 확인하여 공인 인증이 된 사이트인지를 판단하게 됩니다.

SSL을 사용하는 https protocol은 보다 사이트를 안전하게 관리할 수 있는 방법이자 사이트를 클라이언트에게 신뢰할 수 있도록 만들어주는 역할을 담당합니다.

인증서를 직접 발급 받아 테스트 해보고 이를 통해 보다 안전한 사이트를 구축하는 것은 여러분의 몫으로 남겨두겠습니다.

맙습니다.

그리드형
댓글
댓글쓰기 폼