1. 발급받으신인증서를해당서버폴더에업로드또는저장합니다. 설명 : [$Apache] = Apache 디렉토리. 소스버전의경우 Apache]# mkdir conf/ssl Apache]# cp

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "1. 발급받으신인증서를해당서버폴더에업로드또는저장합니다. 설명 : [$Apache] = Apache 디렉토리. 소스버전의경우 Apache]# mkdir conf/ssl Apache]# cp"

Transcription

1 Apache( 단일도메인 ) SSL 인증서신규설치가이드. [ 고객센터 ] 한국기업보안. 유서트기술팀

2 1. 발급받으신인증서를해당서버폴더에업로드또는저장합니다. 설명 : [$Apache] = Apache 디렉토리. 소스버전의경우 Apache]# mkdir conf/ssl Apache]# cp conf/ssl Apache]# ls -la conf/ssl -rw-r--r--. 1 root root 1931 Jan 1 00:00 -rw-r--r--. 1 root root 1744 Jan 1 00:00 -rw-r--r--. 1 root root 1931 Jan 1 00:00 -rw-r--r--. 1 root root 1931 Jan 1 00:00 -rw-r--r--. 1 root root 1744 Jan 1 00:00 비밀번호.txt 2. [$Apache]/modules 디렉토리를확인하여 ssl 모듈확인. 동적설치확인. Apache]# ls bin build cgi-bin conf error htdocs icons include logs man manual modules Apache]# ls modules mod_authn_anon.so mod_authz_owner.so mod_deflate.so mod_ssl.so mod_authn_dbd.so mod_authz_user.so mod_dir.so mod_speling.so mod_authn_dbm.so mod_autoindex.so mod_disk_cache.so mod_ssl.so mod_authn_default.so mod_cache.so mod_dnssd.so mod_status.so 정적설치확인. Apache]# bin/apachectl -l Compiled in modules: core.c http_core.c mod_so.c mod_ssl.c 3. httpd.conf 파일수정. 모듈및설정파일을활성화시킨다.( 필요한문구만을출력하여나타내었습 니다.) Apache]# vi conf/httpd.conf Listen 80

3 # Dynamic Shared Object (DSO) Support # # Example: # LoadModule foo_module modules/mod_foo.so # #LoadModule mpm_event_module modules/mod_mpm_event.so #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so #LoadModule mpm_worker_module modules/mod_mpm_worker.so #LoadModule authn_file_module modules/mod_authn_file.so #LoadModule authz_dbd_module modules/mod_authz_dbd.so LoadModule ssl_module modules/mod_ssl.so * 설명 : 위와같은 ssl 모듈을찾아서주석을제거하여활성화한다. <IfModule proxy_html_module> #Include conf/extra/proxy-html.conf </IfModule> Include conf/extra/httpd-ssl.conf * 설명 : 위와같은 ssl 설정파일을찾아서주석을제거하여활성화한다. <IfModule ssl_module> SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule> 4. httpd-ssl.conf 파일수정.( 필요한문구만을출력하여나타내었습니다.) Apache]# vi conf/extra/httpd-ssl.conf Listen 443 * 설명 : 사용할 SSL 포트번호 SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES SSLHonorCipherOrder on

4 SSLProtocol all -SSLv3 SSLProxyProtocol all -SSLv3 * 설명 : SSL 프로토콜설정. #SSLPassPhraseDialog builtin SSLPassPhraseDialog exec:/etc/httpd/conf.d/pass.sh * 설명 : ssl 인증서비밀번호 shell script 위치및설정. 비밀번호가없다면설정불필요. SSLSessionCache SSLSessionCacheTimeout 300 "shmcb:/usr/local/apache/logs/ssl_scache(512000)" <VirtualHost *:443> * 설명 : 주로 * 자리에 IP 주소기입 DocumentRoot "/usr/local/apache/www" * 설명 : 도메인홈디렉토리설정. ServerName * 설명 : 설치가필요한도메인이름. ServerAdmin ErrorLog "/usr/local/apache/logs/error_log" TransferLog "/usr/local/apache/logs/access_log" SSLEngine on * 설명 : SSL 엔진사용. SSL 을사용토록한다. SSLCertificateFile "/usr/local/apache/conf/ssl/www.ucert.co.kr.crt" * 설명 : 인증서경로설정및파일명 SSLCertificateKeyFile "/usr/local/apache/conf/ssl/www.ucert.co.kr.key" * 설명 : 개인키경로설정및파일명 SSLCertificateChainFile "/usr/local/apache/conf/ssl/www.ucert.co.kr.ca-bundle" * 설명 : Chain 인증서경로설정및파일명 SSLCACertificateFile "/usr/local/apache/conf/ssl/www.ucert.co.kr.root-bundle" * 설명 : Root 인증서경로설정및파일명 <FilesMatch "\.(cgi shtml phtml php)$"> </FilesMatch> <Directory "/usr/local/apache/cgi-bin"> </Directory>

5 BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "/usr/local/apache/logs/ssl_request_log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> 5. 2 개이상의인증서 httpd-ssl.conf 파일수정.( 필요한문구만을출력하여나타내었습니다.) Apache]# vi conf/extra/httpd-ssl.conf Listen 443 Listen 444 * 설명 : 사용할포트번호추가. SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES SSLHonorCipherOrder on SSLProtocol all -SSLv3 SSLProxyProtocol all -SSLv3 #SSLPassPhraseDialog builtin SSLPassPhraseDialog exec: :/usr/local/apache/conf/pass.sh SSLSessionCache SSLSessionCacheTimeout 300 "shmcb:/usr/local/apache/logs/ssl_scache(512000)" <VirtualHost *:443> DocumentRoot "/usr/local/apache/www" ServerName ServerAdmin ErrorLog "/usr/local/apache/logs/error_log" TransferLog "/usr/local/apache/logs/access_log" SSLEngine on

6 SSLCertificateFile "/usr/local/apache/conf/ssl/www.ucert.co.kr.crt" * 설명 : 인증서경로설정및파일명 SSLCertificateKeyFile "/usr/local/apache/conf/ssl/www.ucert.co.kr.key" * 설명 : 개인키경로설정및파일명 SSLCertificateChainFile "/usr/local/apache/conf/ssl/www.ucert.co.kr.ca-bundle" * 설명 : Chain 인증서경로설정및파일명 SSLCACertificateFile "/usr/local/apache/conf/ssl/www.ucert.co.kr.root-bundle" * 설명 : Root 인증서경로설정및파일명 <FilesMatch "\.(cgi shtml phtml php)$"> </FilesMatch> <Directory "/usr/local/apache/cgi-bin"> </Directory> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "/usr/local/apache/logs/ssl_request_log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> <VirtualHost *:444> * 설명 : VirtualHost 자리에사용할포트조정. DocumentRoot "/usr/local/apache/dev" * 설명 : 도메인홈디렉토리설정. ServerName dev.ucert.co.kr:444 * 설명 : 도메인이름. ServerAdmin ErrorLog "/usr/local/apache/logs/error_log" TransferLog "/usr/local/apache/logs/access_log" SSLEngine on

7 SSLCertificateFile "/usr/local/apache/conf/ssl/dev.ucert.co.kr.crt" * 설명 : dev.ucert.co.kr 인증서경로설정및파일명 SSLCertificateKeyFile "/usr/local/apache/conf/ssl/dev.ucert.co.kr.key" * 설명 : dev.ucert.co.kr 개인키경로설정및파일명 SSLCertificateChainFile "/usr/local/apache/conf/ssl/dev. ucert.co.kr.ca-bundle" * 설명 : dev.ucert.co.kr Chain 인증서경로설정및파일명 SSLCACertificateFile "/usr/local/apache/conf/ssl/dev.ucert.co.kr.root-bundle" * 설명 : dev.ucert.co.kr Root 인증서경로설정및파일명 <FilesMatch "\.(cgi shtml phtml php)$"> </FilesMatch> <Directory "/usr/local/apache/cgi-bin"> </Directory> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "/usr/local/apache/logs/ssl_request_log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> 6. 기존인증서파일명이 PEM 으로되어있을경우. 1. 아래와같이 PEM 이 2 가지형식으로있을경우. SSLCertificateFile /etc/httpd/conf.d/ssl/newreq.pem * 설명 : 인증서경로설정및파일명 SSLCertificateKeyFile /etc/httpd/conf.d/ssl/newreq.pem * 설명 : 개인키경로설정및파일명 SSLCertificateChainFile /etc/httpd/conf.d/ssl/chain.pem * 설명 : Chain 인증서경로설정및파일명 #SSLCACertificateFile /etc/httpd/conf.d/ssl/ca-bundle.crt * 설명 : Root 인증서경로설정및파일명 cat 명령어로도메인.key, 도메인.crt 파일을하나의파일에추가하여생성한다.( 순서중요!) cat > newreq.pem cat >> newreq.pem

8 cat 명령어로체인인증서, 루트인증서파일을하나의파일에추가하여생성한다. cat > newreq.pem cat >> newreq.pem 2. 아래와같이 PEM 이 2 가지형식으로있을경우. SSLCertificateFile /etc/httpd/conf.d/ssl/www.ucert.co.kr.pem * 설명 : 인증서경로설정및파일명 SSLCertificateKeyFile /etc/httpd/conf.d/ssl/www.ucert.co.kr.key * 설명 : 개인키경로설정및파일명 #SSLCertificateChainFile /etc/httpd/conf.d/ssl/server-ca.crt * 설명 : Chain 인증서경로설정및파일명 #SSLCACertificateFile /etc/httpd/conf.d/ssl/ca-bundle.crt * 설명 : Root 인증서경로설정및파일명 cat명령어로도메인.crt, 체인인증서, 루트인증서파일을하나의파일에추가하여생성한다.( 순서중요!) cat > cat >> cat >> 3. 아래와같이 PEM 이 1 가지형식으로있을경우. SSLCertificateFile /etc/httpd/conf.d/ssl/www.ucert.co.kr.pem * 설명 : 인증서경로설정및파일명 SSLCertificateKeyFile /etc/httpd/conf.d/ssl/www.ucert.co.kr.pem * 설명 : 개인키경로설정및파일명 #SSLCertificateChainFile /etc/httpd/conf.d/ssl/server-ca.crt * 설명 : Chain 인증서경로설정및파일명 #SSLCACertificateFile /etc/httpd/conf.d/ssl/ca-bundle.crt * 설명 : Root 인증서경로설정및파일명 cat명령어로도메인.key 도메인.crt, 체인인증서, 루트인증서파일을하나의파일에추가하여생성한다.( 순서중요!) cat > cat >> cat >> cat >>

9 7. KEY 파일비밀번호제거및추가하는방법. 비밀번호제거 Apache]# openssl rsa -in -out Enter pass phrase for [ 비밀번호 ] writing RSA key * 명령어형식 : openssl rsa -in [ 제거할키파일명 ] -out [ 제거한키파일명 ] * 설명 : 위와같이쓰기문구가출력된다면비밀번호제거완료. 비밀번호추가 Apache]# openssl rsa -in -passout pass:'test1234' -out -des3 writing RSA key * 명령어형식 : openssl rsa -in [ 추가할키파일명 ] -passout pass:'[ 비밀번호 ]' -out [ 추가한키파일명 ] * 설명 : 위와같이쓰기문구가출력된다면비밀번호추가완료. 8. Shell Script 제작. Shell Script 가있으면재시작시비밀번호를입력할필요가없다. ( 인증서비밀번 호가없다면불필요함.) Apache]# vi conf/pass.sh #!/bin/sh echo 패스워드 :wq Apache]# chmod a+x paas.sh * 설명 : root 만권한준다면 chmod 아파치재시작진행. Apache]# bin/apachectl -t Syntax OK * 설명 : 설정문법에오류가있는지확인한다. 오류가있다면오류문구출력. Apache]# bin/apachectl -v * 설명 : 아파치버전확인. 비밀번호가있는인증서라면재시작시비밀번호를입력. 비밀번호가제거혹은 Shell Script 사용시비밀번호입력불필요. Apache]# bin/apachectl stop 아파치 2.0.X 이하버전 Apache]# bin/apachectl startssl

10 Apache]# bin/apachectl restart * 설명 : 아파치재시작. 아파치 2.0.X 이상버전 Apache]# ps -ef grep httpd * 설명 : 아파치데몬확인진행 root Feb20 00:00:03 /usr/local/apache/bin/httpd -k start daemon Feb20 00:00:00 /usr/local/apache/bin/httpd -k start daemon Feb20 00:00:00 /usr/local/apache/bin/httpd -k start daemon Feb20 00:00:00 /usr/local/apache/bin/httpd -k start daemon Feb20 00:00:00 /usr/local/apache/bin/httpd -k start root :22 pts/1 00:00:00 grep httpd Apache]# netstat -nlp grep httpd tcp 0 0 :::80 :::* LISTEN /httpd tcp 0 0 :::443 :::* LISTEN /httpd 10. 인증서설치를확인하도록합니다. ~]# echo "" openssl s_client -connect localhost:443 openssl x509 -noout -dates * 설명 : 위의명령어를입력하여인증서갱신날짜를확인하도록합니다. notbefore=jan 1 00:24: GMT # 인증서시작일 notafter=dec 31 :38: GMT # 인증서만료일 * 명령어형식 : echo "" openssl s_client -connect [ 도메인 or IP]:[ 포트번호 ] openssl x509 -noout - dates

11 11. 웹페이지에서의인증서확인방법 익스플로러확인방법 https://www.ucert.co.kr 접속예 도메인접속후에 Alt 키를누르고파일 속성 인증서클릭후인증서보기를선택하시면인증서정보를확인할수있습니다. 발급대상과유효기간이맞는지 확인합니다.