APACHE INSTALL GUIDE 1.3.X VERSION -ANYCERT-
목차 1. 사전준비 mod_ssl OpenSSL 인증서파일 2. 주의사항 신규및갱신구분 CSR 직접생성여부 3. 인증서설치 httpd.conf 설정 httpd-ssl.conf 설정 갱신설치 서비스재시작 4. 확인및테스트 서비스구동확인 네트워크상태확인 방화벽확인 실제브라우저테스트 5. 이슈 *:80 443 포트 VirtualHost 대상 Error_log
1. 사전준비 1. mod_ssl Apache 에 SSL 을설정하려면 mod_ssl 이꼭필요합니다. 확인방법은 2 가지가있습니다. 1. statically linking module 로설치된 mod_ssl 모듈확인 [root@web1 root]# $HTTPD/bin/httpd -l Compiled-in modules:... mod_ssl.c... [root@web1 root]# 웹서버에설치된모듈중에 mod_ssl.c 을확인합니다. 2. DSO module 로설치된 mod_ssl 모듈확인 [root@web1 root]# $HTTPD/bin/httpd -l Compiled-in modules:... mod_so.c... [root@web1 root]# ls $HTTPD/libexec httpd.exp libssl.so [root@web1 root]# mod_so.c 가포함되어있는지확인후, libexec 폴더내에 libssl.so 파일이있는지확인합니다. mod_ssl 설치방법 http://legend.anycert.co.kr/support/apache_modssl_install.html
1. 사전준비 2. OpenSSL OpenSSL 이설치되어있는지확인합니다. 명령어로간단히확인할수있습니다. [root@web1 root]# openssl version OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 [root@web1 root]# OPENSSL 설치방법 http://legend.anycert.co.kr/support/openssl_install.html 3. 인증서파일 다운받은인증서파일을확인합니다. 일반적으로다음과같은파일로구성되어있습니다. www.domain.com.crt ( 혹은.cer) www.domain.com.key Verisign_bundle.crt ( 혹은.cer) 1 번째파일이인증서파일입니다. 2 번째파일은개인키 ( 비밀키 ) 파일입니다. 3 번째파일은루트인증서파일입니다.
2. 주의사항 1. 신규및갱신구분 갱신설치의경우 "3-3 갱신설치 " 로건너뛰어진행하시기바랍니다. 신규설치는그대로진행합니다. 2. CSR 직접생성여부 CSR 을직접생성하셨다면, Key 파일을보관하고있을것입니다. key 파일의유무를먼저확인하시고다음으로진행하시기바랍니다. 다운받은파일에확장자가.key 파일이있는경우 CSR 을직접생성한것이아니기때문에무시하시고그대로진행하시면됩니다.
3. 인증서설치 1. httpd.conf Apache Conf 폴더에서 httpd.conf 파일을오픈합니다. 1. mod_ssl 모듈을 Load 하고있는지확인 <IfDefine SSL> LoadModule ssl_module </IfDefine> libexec/libssl.so <IfDefine SSL> AddModule mod_ssl.c </IfDefine> # 해당부분의주석을풀어주세요. 2. 443 포트가열려있는지확인합니다. <IfDefine SSL> Listen 80 Listen 443 </IfDefine> # 443 을검색하여포트를확인하여주세요 httpd.conf 파일을저장합니다. 1 번의 mod_ssl 부분이없는경우 1-1-1 의경우일것입니다. 무시하시고진행하시면되십니다.
3. 인증서설치 2. httpd.conf <IfDefine SSL> <VirtualHost *:443> 1. VirtualHost 를서버구성에맞게수정합니다. 아래예시를참조하여설정하시기바랍니다. DocumentRoot "/usr/local/apache-ssl/htdocs" ServerName www.anycert.co.kr ServerAdmin admin@anycert.co.kr ErrorLog /usr/local/apache-ssl/logs/error_log TransferLog /usr/local/apache-ssl/logs/access_log SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/apache-ssl/conf/ssl.crt/www.anycert.co.kr.crt # 설명 : 인증서파일의위치를지정해줍니다. SSLCertificateKeyFile /usr/local/apache-ssl/conf/ssl.key/www.anycert.co.kr.key # 설명 : 개인키파일의위치를지정해줍니다. SSLCertificateChainFile /usr/local/apache-ssl/conf/ssl.crt/verisign_bundle.crt # 설명 : 루트인증서파일의위치를지정해줍니다. <Files ~ "\.(cgi shtml phtml php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/usr/local/apache-ssl/cgi-bin"> SSLOptions +StdEnvVars </Directory> SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog /usr/local/apache-ssl/logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> </IfDefine>
3. 인증서설치 3. 갱신설치 갱신설치의경우, 기존에설치되어있던인증서파일들을새로다운받은파일로교체만하시면됩니다. 그외에수정할부분은없습니다. 4. 서비스재시작 마지막으로 Apache 를재시작하여줍니다. ( 서버를통째로재시작할필요는없습니다.) [root@web1 root]# /usr/local/apache-ssl/bin/httpd -t Syntax OK 설명 : 설정에구문오류가없는지테스트 Apache Restart [root@web1 root]# /usr/local/apache-ssl/bin/apachectl stop /usr/local/apache-ssl/bin/apachectl stop: httpd stopped [root@web1 root]# /usr/local/apache-ssl/bin/apachectl startssl [root@web1 root]# ps ef grep httpd root 5465 5345 pts/1 00:00:00 grep httpd root 2724 1? 00:00:13 /usr/local/apache-ssl/bin/httpd -DSSL
4. 확인및테스트 1. 서비스구동확인 ps ef grep httpd 명령어로서비스가구동되었는지확인합니다. 아울러 DSSL 옵션이적용되었는지도확인합니다. [root@www bin]# ps -ef grep httpd root 5568 1 0 16:09? 00:00:00 /dotname/local/bin/httpd -DSSL nobody 5595 5568 0 16:11? 00:00:00 /dotname/local/bin/httpd -DSSL nobody 5602 5568 0 16:14? 00:00:00 /dotname/local/bin/httpd -DSSL root 5618 5345 0 16:18 pts/1 00:00:00 grep httpd 2. 네트워크상태확인 netstat 명령어로 443 포트가 LISTEN 중인지확인합니다. [root@www bin]# netstat -anp grep httpd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5568/httpd tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 5568/httpd 3. 방화벽확인 사용하고있는방화벽제어프로그램 ( 혹은장비 ) 에서 443 포트를 80 포트와동일하게 OPEN 하여주시기바랍니다.
4. 확인및테스트 4. 실제브라우저테스트 이제인터넷브라우저에서 HTTPS 접속을테스트하여보시기바랍니다. 아래이미지는예시입니다.
4. 확인및테스트 4. 실제브라우저테스트 http://www.ssltest.net 에서좀더자세한정보를확인할수있습니다.
5. 이슈 1. *:80 설정을마쳤으나페이지가열리지않고 " 페이지를표시할수없습니다 " (IE), SSL 연결오류입니다.(Chrome) 이라는문구가뜰경우, http://www.domain.com:443 으로연결이되는지접속하여보시기바랍니다. 만일연결이된다면 VirtualHost 문제입니다. 사용중인 VirtualHost 들이 <VirtualHost 192.168.1.5> 와같이설정되어있을것입니다. 이것을 <VirtualHost 192.168.1.5:80> 와같이포트를입력하여주시기바랍니다. 2. 443 포트 설정을마치고서비스는시작되었지만 netstat 에서 443 포트가 LISTEN 을하지않는경우, 다음을확인하여보십시오 1. httpd.conf 에서 ssl module 을로드하고있는지 (3.1 참조 ) 2. httpd.conf 파일에 Listen 443 부분이없는지확인 3. VirtualHost 대상 설정은모두정상이나아파치서비스가정상구동이되지않을경우다음을확인하여보십시오 1. httpd-ssl.conf 에기술된 <VirtualHost *:443> 부분을 <VirtualHost 192.168.1.5:443> 와같이 IP 로변경하거나 <VirtualHost www.domain.com:443> 같이도메인으로변경하거나 <VirtualHost _default_:443> 로설정하고재시작하여보십시오.
5. 이슈 5. Error_log 그외의문제가발생할경우 logs 폴더에기록된 error_log 를확인하여문제점을확인하여주시기바랍니다. 아래는예시입니다. [Error log] Syntax error on line 117 of /usr/local/apache2/conf/extra/httpd-ssl.conf: SSLCertificateFile: file '/usr/local/apache2/conf/wwww.domain.com.crt' does not exist or is empty # 설명 : 파일명기입에오타가발생하여 Syntax Error 가발생하였다.