세상에서 가장 많이 사용하고 있다는 아파치 웹서버에 SSL 설정을 하여 결과적으로 HTTPS를 사용할 수 있게 하는 방법에 대해 간략하게 정리해 보겠습니다. 아래는 개인적으로 자체 키를 생성해서 사용하는 방법을 적어볼 것이며 이것은 브라우저에서 접속시에 인증되지 않은 접속으로 경고가 뜨게 됩니다. 공인 인증 기관에서 키를 발급받을 경우 키 생성 부분만 발급 기관에서 요구하는 방법대로 수행을 하시면 됩니다.
1. Apache 웹서버 다운로드 및 설치
http://httpd.apache.org/ 에 방문하여 최신버전의 웹서버를 다운받습니다. 2.2.17 버전을 예로 들어 설명해 보겠습니다. 다운받은 파일을 적절한 위치로 이동후에 다음과 같은 명령어로 SSL을 활성화 시켜줍니다.
$ ./configure --prefix=/usr/local/apache2 --enable-ssl --enable-so $ make $ make install
위의 설명에서는 아파치 웹서버를 기본적으로 /usr/local/apache2 위치에 설치하는것으로 하였습니다.
2. SSL 설정하기
위와 같이 설치할 경우 아파치 웹서버의 설정 파일인 httpd.conf 파일은 /usr/local/apache2/conf 에 위치하게 됩니다. /usr/local/apache2/conf/httpd.conf 설정 파일을 열어 httpd-ssl.conf 추가 설정의 주석을 해제해 줍니다.
$ vi /usr/local/apache2/conf/httpd.conf Include conf/extra/httpd-ssl.conf
3. server.crt 및 server.key 생성하기
우선 openssl을 이용하여 server.key를 생성합니다. 계정의 루트 디렉토리에서 작업을 하도록 하겠습니다.
$ cd ~ $ openssl genrsa -des3 -out server.key 1024
위의 명령을 수행할 경우 암호를 물어보게 됩니다. 여기서 설정하는 암호를 잘 기억해 두셔야 합니다. 나중에 아파치 실행시에 물어봅니다. 여기서 암호를 지정하지 않을경우 아파치 실행시에 암호를 물어오지 않습니다.
이번에는 위에서 생성한 server.key파일을 이용하여 인증요청파일을 생성합니다.
$ openssl req -new -key server.key -out server.csr
마지막으로 위에서 생성한 server.key 및 server.csr파일을 이용하여 자체적으로 서명을 한 server.crt파일을 생성합니다.
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
좀더 자세한 정보를 원할 경우 [다음]을 참고하도록 합시다.
이제 만들어진 인증키 파일을 아파치 설정 디렉토리로 옮기도록 합니다. 이 디렉토리는 적당한 위치를 사용하시면 됩니다.
$ cd ~ $ cp server.key /usr/local/apache2/conf/ $ cp server.crt /usr/local/apache2/conf/
4. SSL이 적용된 Apache 웹서버 구동하기
이제 설정이 끝난 아파치를 구동하도록 합시다.
$ /usr/local/apache2/bin/apachectl start
실행시에 위의 server.key를 생성할때 물어보았던 개인키 암호를 물어보게 되는데 입력해 주도록 합시다.
Apache/2.2.17 mod_ssl/2.2.17 (Pass Phrase Dialog) Some of your private key files are encrypted for security reasons. In order to read them you have to provide the pass phrases. Server www.example.com:443 (RSA) Enter pass phrase: OK: Pass Phrase Dialog successful.
5. 가상호스트(VirtualHost) 적용하기
필요한 경우 하나의 서버에 다수의 가상호스트를 적용해야 할 수도 있습니다. 이경우 다음과 같은 가상 호스트 설정을 사용하시면 됩니다. 물론 다수의 키를 사용해도 되고 중복 사용해도 별 문제는 없습니다.
<VirtualHost *:443> ServerAdmin eye@example.com DocumentRoot /usr/local/apache2/htdocs ServerName example.com:443 ... SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile "/usr/local/apache2/conf/server.crt" SSLCertificateKeyFile "/usr/local/apache2/conf/server.key" </VirtualHost>
* CC 인증을 위한 키 생성
CC 인증을 받기 위해 SSL키 설정시 제약 사항이 추가되게 됩니다. 가령 다음과 같습니다.
- 암호알고리즘으로 AES128 이상
- 무결성알고리즘으로 SHA-2 (SHA256)
- 키 알고리즘(RSA 1024이상)
이 경우 다음과 같이 키를 생성하시면 됩니다.
$ openssl genrsa -aes128 -out server.key 1024 $ openssl req -new -key server.key -out server.csr $ openssl x509 -sha256 -req -days 365 -in server.csr -signkey server.key -out server.crt
참고 : http://www.thegeekstuff.com/2011/03/install-apache2-ssl/