Apache HTTP Server SSL 설정방법 - Ver 1.4-2015. 2
개정이력 버전 개정일 개정내용 Ver 1.0 2008년 5월 Apache Web Server SSL 설명서최초작성 Ver 1.1 2009년 1월 인증서갱신방법, 다중 SSL 서버설정방법추가 Ver 1.2 2011년 12월 암호체계고도화관련키길이변경 (2,048bit) Ver 1.3 2014년 9월 비밀번호규칙권고내용추가 Ver 1.4 2015년 2월 PKCS #12 파일변환관련설명추가 본문서는정보통신부 한국정보보호진흥원의 보안서버구축가이드 를참고하 여작성되었습니다. 본문서내용의무단도용및사용을금합니다.
< 목차 > 1. Apache 서버에 OpenSSL 과 mod_ssl 의설치방법 1 2. Apache 서버에서개인키및 CSR 생성방법 3 3. 보안서버인증서설치 5 가. 발급인증서확인하기 6 나. Apache 환경설정하기 6 4. 보안웹서버가동 7 5. 다른서버에 SSL 인증서와키복사하기 8 6. 인증서갱신하기 9 7. 다중 SSL 서버설정 10 8. PKCS #12 파일변환방법 12
1. Apache 서버에 OpenSSL과 mod_ssl의설치방법 Apache 서버에서 SSL 통신을가능하게하려면 OpenSSL과 mod_ssl이필요합니다. 우선, 현재서비스중인 Apache 서버에 mod_ssl이설치되어있는지를 httpd -l 옵션을사용하여 mod_ssl.c 또는 mod_ssl.so가있는지확인하시기바랍니다. 만일설치되어있다면 Apache 서버의버전에맞는개인키생성및 CSR 생성방법과정으로이동하시기바랍니다. [ 그림 ] mod_ssl 설치확인예 OpenSSL은 Apache 버전과 mod_ssl의버전을확인한후에알맞은 OpenSSL을설치해야합니다. 예를들어 Apache 1.3.3 버전에는 mod_ssl 2.1.6( 또는 2.1.7) 을설치해야하고, mod_ssl 2.1.6은 OpenSSL 0.8.1b와 0.9.1c 버전사이에서만동작합니다. 버전을확인하지않고 OpenSSL과 mod_ssl을설치하면 Apache 컴파일과정에서오류가발생합니다. Apache 지원버전및정보는 mod_ssl 소스의 README.Version 파일이나 www.openssl.org 사이트에서확인가능합니다. 1 OepnSSL 의설치 (www.openssl.org) - 압축풀기 $ gzip -cd openssl-0.9.6.tar.gz tar xvf - - config 실행 $./config$ make$ make installconfig prefix를주지않으면 /usr/local/ssl 디렉토리에설치됩니다. 다른디렉토리에설치할려면아래와같이실행합니다. $./config --prefix=/usr/local --openssldir=/usr/local/openssl 2 mod_ssl 의설치 (www.modssl.org) - 압축풀기 $ gzip -cd apache_1.3.19.tar.gz tar xvf $ gzip -cd mod_ssl-2.8.1-1.3.19.tar.gz tar xvf - 1 -
- mod_ssl 설정 $ cd mod_ssl-2.8.1-1.3.19 $./configure \ --with-apache=../apache_1.3.19 \ --with-ssl=../openssl-0.9.6 \ --prefix=/usr/local/apache 3 Apache 서버설정 (www.apache.org) $ cd../apache_1.3.x $ SSL_BASE=../openssl-0.9.6 \./configure \ --prefix=/usr/local/apache \ --enable-module=ssl $ make $ make certificate $ make install - 2 -
2. Apache 서버에서개인키및 CSR 생성방법 1 랜덤넘버생성 $ openssl md5 * > rand.dat 2 개인키 / 공개키키쌍생성 전자금융사기피해예방을위한인증서개인키비밀번호설정규칙강화권고비밀번호는 숫자, 영문, 특수문자 (space 포함 ) 포함하여최소 10 자리이상으로설정 ( 사용매체별혼선방지를위해,,, \( ) 4 종제외 ) $ openssl genrsa -rand rand.dat -des3 -out key.pem 2048 Generating RSA private key, 2048 bit long modulus.++++++ ++++++ e is 65537 (0x10001) Enter pass phrase for key.pem: ****** Verifying - Enter pass phrase for key.pem: ****** 2012 년 1 월 1 일부터암호체계고도화관련하여키길이가 2,048bit 로변경됩니 다. 반드시 " 2048" 옵션을사용해야발급이가능합니다. 여기서입력한 password 는 CSR 생성, 인증서설치, 보안서버가동에서사용되 므로반드시기억하셔야합니다. 3 개인키확인 $ openssl rsa -noout -text -in key.pem Enter pass phrase for key.pem: ****** Private-Key: (2048 bit) modulus: 00:da:bf:f3:39:d7:c6:1f:bd:6f:a7:b8:aa:67:f2: coefficient: 6b:26:51:9e:fb:77:cf:7e:d4:2a:a6:d2:7f:21:fa: 42:e4:7c:54:2e:5e:e9:fb:03:a6:25:d0:6a:fc:e9: e1:1b:45:82:61:c0:35:a9:50:25:0a:75:2a:f8:cc: 87:10:30:9d:bd:36:8e:4b:f6:55:0d:08:30:e8:55: e4:00:3b:ec 4 CSR 생성 해당하는모든입력은영문자와숫자만허용합니다. 예시를참조하세요. Country Name ( 국가코드 ) : KR State or Province Name ( 시 / 도 ) : Seoul Locality Name ( 구 / 군 ) : GangNam Organization Name ( 회사명 ) : KFTC - 3 -
Organizational Unit Name ( 부서명 ) : Digital Certificate Center Common Name ( 인증받을도메인주소 ) : www.yessign.or.kr $ openssl req -new -key key.pem -out csr.pem Enter pass phrase for key.pem: ****** Private-Key: (2048 bit) modulus: 00:da:bf:f3:39:d7:c6:1f:bd:6f:a7:b8:aa:67:f2: coefficient: 6b:26:51:9e:fb:77:cf:7e:d4:2a:a6:d2:7f:21:fa: 42:e4:7c:54:2e:5e:e9:fb:03:a6:25:d0:6a:fc:e9: e1:1b:45:82:61:c0:35:a9:50:25:0a:75:2a:f8:cc: 87:10:30:9d:bd:36:8e:4b:f6:55:0d:08:30:e8:55: e4:00:3b:ec 5 yessign 에 CSR 제출 - 생성한 CSR 파일을텍스트편집기에서열면아래와같은형식의내용으로되어 있습니다. - yessign SSL 홈페이지 (https://www.yessign.or.kr/ssl/) 에접속하셔서인증서발급 요청을하시고 CSR 입력부분에해당내용을복사해서붙여넣으셔서사용하시면 됩니다. -----BEGIN CERTIFICATE REQUEST----- MIIBETCBvAIBADBXMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEh BrRh2nOTKgfMcT9h+1Xx0wNRQ9/SIGV1y3+3abNiJmJBWnJ8Bg== -----END CERTIFICATE REQUEST----- - 4 -
3. 보안서버인증서설치 SSL 웹서비스를제공하기위해서는보안서버인증서설치시에해당되는체인인증서를설치하여야합니다. 아래설치안내에따라서 보안서버인증서, 체인인증서 를모두웹서버에설치해야모든종류의웹브라우저에서서비스를문제없이제공할수있습니다. 보안서버인증서체인을웹서버에모두설치하기않으면, 웹브라우저에따라서는아래와같이보안경고창이발생할수있습니다. < Microsoft Internet Explorer 6.0 이하버전의경고창 > < Microsoft Internet Explorer 7.0 버전의경고화면 > - 5 -
가. 발급인증서확인하기 yessign SSL 홈페이지관리자로부터수신한이메일의첨부파일에는다음과같은 3종류의인증서가포함되어있습니다. - sslcert.cer : 발급된보안서버인증서 - sslca.cer : 보안서버체인인증서 - sslroot.cer : 보안서버루트인증서 나. Apache 환경설정하기 1 보안서버인증서인 sslcert.cer" 파일과 sslca.cer" 파일을 FTP 등을이용하여 웹서버에업로드합니다. 2 환경설정파일 (httpd.conf 또는 ssl.conf) 을수정합니다. 환경설정파일에서 SSL 설정과관련된부분은 [SSL Support], [SSL Global Context], [SSL Virtual Host Context] 세부분입니다. - [SSL Support] : SSL 지원에대한설정으로기본설정을사용합니다. - [SSL Global Context] : SSL 환경에대한설정으로기본설정을사용합니다. - [SSL Virtural Host Context] : SSL 인증서설정부분으로아래내용대로설정합니다. <VirtualHost _default_:443> # General setup for the virtual host DocumentRoot htdocs ## 웹문서루트경로 ServerName www.test.co.kr ## 인증받은도메인주소 ErrorLog logs/error_log ## 에러로그설정 TransferLog logs/access_log ## 접속로그설정 SSLEngine on ## SSLEngine 을 on 으로해야동작 # Server Certificate: SSLCertificateFile conf/ssl/sslcert.cer # Server Private Key: SSLCertificateKeyFile conf/ssl/key.pem ## SSL 서버인증서파일 ## SSL 서버인증서에대한개인키파일 # Server Certificate Chain: SSLCertificateChainFile conf/ssl/sslca.cer ## SSL 서버인증서발급자인증서파일 Apache 2.2.x 이상의버전에서는 conf/extra/httpd-ssl.conf 파일에위의 Virtual Host 정보를작성하고, httpd.conf 파일에서 conf/extra/httpd-ssl.conf 파일을 include 하도록설정합니다 ( Include conf/extra/httpd-ssl.conf 주석해제 ). - 6 -
4. 보안웹서버가동 1 재설정한환경파일이적용되도록 Apache 서버를재가동합니다. $./apachectl startssl Apache/1.3.31 mod_ssl/2.8.19 (Pass Phrase Dialog) Some of your private key files are encrypted for security reasons. In order to read them you have to provide us with the pass phrases. Server web:443 (RSA) Enter pass phrase: [ 개인키비밀번호입력 ] Ok: Pass Phrase Dialog successful. $APACHE/bin/apachectl startssl: httpd started Apache 2.2.x 이상의버전에서는위명령어대신./apachectl start 로기동합니 다 ( 개인키비밀번호입력을요구함을확인 ). 2 웹브라우저로웹서버를 https://" 프로토콜로접근하면브라우저하단에노란 자물쇠아이콘 (Internet Explorer 일경우 ) 이표시되고해당아이콘을더블클릭하 여인증서의경로가완전하게표시되는것을확인합니다. - 7 -
5. 다른서버에 SSL 인증서와키복사하기 1 3 절 에서설치한인증서와개인키파일을다른아파치서버에복사합니다. 2 3 절나항 과동일하게 SSL 과관련된환경설정을합니다. 3 4 절 의과정대로웹서버를재가동하고 SSL 적용을웹브라우저로확인합니다. - 8 -
6. 인증서갱신하기 1 2 절 의내용을참고하여키파일, CSR 파일을생성합니다. 2 생성된 CSR 을 yessign 홈페이지에제출하고 SSL 인증서를발급받습니다. 3 생성한키파일및발급받은인증서파일로기존의파일들을대체하고 Apache 서버를재기동합니다. - 9 -
7. 다중 SSL 서버설정 1 Apache 웹서버는 Name-Based Virtual Host 기능을지원합니다. 즉, 동일한서 버에서동일한 IP, 동일한 Port 로둘이상의도메인을서비스할수있습니다. Listen 80 NameVirtualHost 11.22.33.44 <VirtualHost 11.22.33.44> ServerName www.domain1.com <VirtualHost 11.22.33.44> ServerName www.domain2.com 2 위와같은환경에서 SSL 서버를추가하고자할경우기존의 VirtualHost 설정에 모두 :80 을추가하고, SSL VirtualHost 는 _default_:443 으로설정합니다. Listen 80 Listen 443 NameVirtualHost 11.22.33.44:80 <VirtualHost 11.22.33.44:80> ServerName www.domain1.com <VirtualHost 11.22.33.44:80> ServerName www.domain2.com <VirtualHost _default_:443> ServerName www.domain1.com:443-10 -
3 Virtual Host 기능을이용하여둘이상의도메인에 SSL 을적용하고자할때는 443 이아닌별도의포트번호를설정해주고실제웹페이지를호출할때도해당 포트번호를포함한 URL 로호출해야합니다. ( 예 : https://www.domain2.com:444/) Listen 80 Listen 443 Listen 444 NameVirtualHost 11.22.33.44:80 <VirtualHost 11.22.33.44:80> ServerName www.domain1.com <VirtualHost 11.22.33.44:80> ServerName www.domain2.com <VirtualHost _default_:443> ServerName www.domain1.com:443 <VirtualHost _default_:444> ServerName www.domain2.com:444 443 이아닌포트는일반적으로방화벽에의해차단되어있을가능성이높습니 다. Apache 기동후서버외부에서 telnet 등의방법으로해당포트가열려있 는지확인해야합니다. - 11 -
8. PKCS #12 파일변환방법 PKCS #12 파일 (*.pfx) : 인증서와개인키를함께저장한파일. 타기종웹서버간의 SSL 인증서복사를위해필요한파일형태. 가. PKCS #12 파일추출 - OpenSSL 설치 : 파일변환을실행할서버에 OpenSSL을설치합니다. ( 참고 : http://www.openssl.org ) - OpenSSL이설치된환경에서다음명령어를실행합니다. > openssl pkcs12 -export -out [ 출력파일명 ] -inkey [ 키파일명 ] -in [ 인증서파일명 ] - 출력파일명 : 추출할파일명 ( 예 : ssl_cert.pfx) - 키파일명 : 사용중인개인키파일명 ( 예 : key.pem) - 인증서파일명 : 사용중인인증서파일명 ( 예 : sslcert.cer) - 예시 > openssl pkcs12 -export -out test.pfx -inkey key.pem -in sslcert.cer 나. PKCS #12 파일설치 - OpenSSL이설치된환경에서다음명령어를실행합니다. > openssl pkcs12 -in [ 입력파일명 ] -out [ 임시파일명 ] -nodes - 입력파일명 : 입력할파일명 ( 예 : ssl_cert.pfx) - 임시파일명 : 인증서와키를임시로저장할파일명 ( 예 : test.pem) - 예시 > openssl pkcs12 -in test.pfx -out test.pem -nodes - 생성된임시파일에서인증서와개인키를따로잘라내어파일로저장합니다. 개인키 : -----BEGIN PRIVATE KEY----- ~ -----END PRIVATE KEY-----" - 12 -