Collects/LinuxServer

Apache-2.x.x 에 SSL 인증서 설치(https 구축)

NWAN 2008. 12. 10. 12:15

Apache-2.x.x 에 SSL 인증서 설치(https 구축)


작성자 : NWAN

참고 문서 : http://sangmo.tistory.com/tag/%EA%B0%9C%EC%9D%B8%ED%82%A4
                http://legend.anycert.co.kr/support/httpd_ssl_install.html
                http://wiki.kldp.org/wiki.php/DocbookSgml/SSL-Certificates-HOWTO#AEN409
작성일 : 2008년 12월 10일


리눅스 머신에 웹서버를 구축 해볼때 마다 일반 80 포트로 운영되는 웹서버만 구축해 보았다.

예전부터 웹 서핑을 할때 https 로 운영되는 웹사이트들이 있어 '한번 해봐야겠다' 라는 생각만 가지고 있었지

실제로 운영해 보지 못했다. 때마침 해 볼 기회가 있어서 몇시간 삽들고 구글을 파헤쳐 이곳 저곳에서 많은

정보를 얻은 다음에 이렇게 문서로 정리를 해 본다.
(실제로 막상 무언가 하나 구축하고 정리를 안해놓는 습관때문에 매번 똑같은 구축을 할때 반복된 삽질을 하게 되어... 귀차니즘을 무릎쓰고... ㅜㅜ)

아파치에 SSL 인증서를 설치하려면 기본적으로 아파치가 ssl 을 인증할 수 있도록 컴파일 하여야 하고, openssl 서버가

설치되어 있어야 한다. SSL 서버를 설치하는 부분은 다른 웹 문서를 참고 하도록 하고, 본 문서에서는 Apache

부분만 다루도록 하겠다.

1. Apache 에 SSL 모듈 설치

Apache 는 SSL 서버로 설치하기 위해  반드시 필요한 옵션을 넣고 컴파일 하여야 한다.
 (본 문서는 필자가 테스트로 운영하는 서버의 목적에 맞게 컴파일 한것이므로 반드시 본 문서와 똑같이 할 필요는 없다.)

우선은 Apache 1.x.x 버전이라면 http://www.modssl.org 사이트에서 아파치 버전에 맞는 소스코드를 다운받아

컴파일 해야 하지만(반드시 해당 버전에 맞는 모듈을 다운받아야 한다) 아파치 2.x.x 버전은 컴파일 할때

--enable-ssl 과 --enable-modules=ssl 옵션을 주고 컴파일 해야 한다. modssl.org 에 해당 버전에 맞는 정보가

나와있으므로 참고하면 된다.

여기서는 필자가 운영하는 Apache-2.x.x 버전을 기준으로 설명하겠다. 컴파일 하는 옵션은 다음과 같다.

사용자 삽입 이미지
( 노란점 찍힌 2부분이 SSL 을 위해 필요한 옵션)


위와 같이 컴파일 했으면 make && make install 로 설치를 완료하자.

설치를 완료하고 다음 그림과 같이 실행해 보자.

사용자 삽입 이미지

'httpd -l'  명령어와 'ls /usr/local/server/apache2/modules' 로 mod_ssl.so 모듈이 설치 되어있는지 확인한 후

설치가 안되어있다면 다시 컴파일 하거나 해당 모듈을 추가해야한다.

위 과정까지 완료가 되었으면 본격적으로 Apache 에 SSL 인증서를 설치해 보자.

2. SSL 인증서를 위한 개인키 생성

다음 그림과 같이 개인키를 생성하도록 한다.

사용자 삽입 이미지

위 그림에서 생성된 개인키는 반드시 백업을 받아 두도록 해야한다. 위에서 입력한 개인키 암호는 반드시 기억하길 바란다.

개인키를 생성 하였으면 인증기관을 통해 요청할 인증 요청서(CSR)를 생성해야 한다.

CSR( Certificate Sign Request ) 은 SSL 서버를 운영하는 회사에 대한 인증을 요청하는 일종의 신청서라고

생각하면 된다.

사용자 삽입 이미지

여기서 몇부분 살펴 보도록 하자.

- Country Name (2 letter code) [GB]:KR   (국가 코드명)
- State or Province Name (full name) [Berkshire]:Seoul   (도시명)
- Locality Name (eg, city) [Newbury]:Seoul   (지역명)
- Organization Name (eg, company) [My Company Ltd]:Samsung   (기업명)
- Organizational Unit Name (eg, section) []:SystemAdministrator   (부서명)
- Common Name (eg, your name or your server's hostname) []:samsungtest.co.kr  (ssl 서버 도메인)
- Email Address []:test@samsungtest.co.kr   (이메일 주소)

위 그림에서 마지막 2개 항목은 입력하지 않고 그냥 넘어가면 된다.

위 과정이 모두 끝났으면 생성된 test.csr 파일을 인증기관에 넘기고 인증기관에서 인증서를 보내줄때까지 기다린다.

그러나 실제로 운영될 서버가 아니라면 자기 자신이 직접 인증서를 제작하여 테스트로 직접 운영 할 수도 있다.

위에서 생성한 test.csr 키를 가지고 다음과 같은 명령어를 입력하면 가능하다.

사용자 삽입 이미지

위 그림에서 보면 해당 디렉토리에 test.crt 라는 인증서가 생성된 것을 알 수 있다.

3. SSL 운영을 위한 Apache 환경설정

아파치 환경설정파일인 httpd.conf 파일을 편집기로 열어보고, 다음 그림과 같이 설정한다.

사용자 삽입 이미지
밑줄친 부분이 모듈의 맨 마지막에 추가 되어있는지 확인하고, 없으면 위부분을 입력한다.

사용자 삽입 이미지
밑줄친 부분에 주석이 되있으면 주석을 제거하고  ssl_module 에 대한 부분이 설정 되어있는지 확인한다. 위 그림에서

밑줄친 부분은 httpd를 ssl 로 운영하기 위한 환경 설정 파일의 경로를 지정하는 부분이다.

httpd.conf 파일을 위와 같이 수정하였다면, 다음에 httpd-ssl.conf 파일을 수정한다.

사용자 삽입 이미지
위 그림에서 첫번째 노란 점은 https 를 위한 가상서버 설정 부분이고 두번째 노란점은 위 과정에서 자신이 테스트로

만든 인증서 위치의 절대 경로이고, 세번째 노란점은 처음에 생성한 개인키의 절대경로이다.

이제 모든 설정이 끝났다. 웹서버를 실행시켜보고, 다음 그림과 같이 443 포트가 활성화 되어있다면 여태까지의

설정은 성공한 것이다.

사용자 삽입 이미지

해당 서버로 https 접속을 시도하면 인증되지 않은 기관에서 서명한 사이트라는 경고나 기타 접속오류 메세지가 나타날 것이다

이 메세지가 나타나는 이유는 자신이 직접 인증서를 만들어 인증을 받기 때문에 신뢰하지 못한 기관에서 인증한 인증서라는

오류메세지이므로 무시하여도 상관 없다.


                                                                                                                                    - Post by NWAN -