멀티도메인 CSR( 인증신청서 ) 생성및 CRT( 인증서 ) 적용방법 멀티도메인의경우단일도메인과유사한설정으로이루어지며대표도메인의개인키와인증서, CA root인증서파일을다른도메인에도동일하게적용을시키는방식이며인증서파일에멀티도메인으로신청한도메인키값이모두포함되어있습니다. nextline.co.kr 을대표도메인으로한 www.nextline.co.kr 2개도메인의 CSR생성과 CRT을적용한예입니다. Apache 웹서버에 SSL 를적용하기위해아래항목이설치되어있어야합니다. - OpenSSL 암호화라이브러리 - Mod_ssl 모듈 ( 1 ) OpenSSL 라이브러리설치확인 OpenSSL 라이브러리가설치되지않은경우기술문서를참고하여설치하여주시기바랍니다. 1 rpm 버전확인 [root@nextline ~]# rpm -qa grep openssl rpm 버전으로설치된 openssl의유 / 무를확인합니다. 2 Source 버전확인 whereis 명령어명령의실행파일, 소스, 매뉴얼페이지가어디있는지보여줍니다. [root@nextline ~]# whereis openssl rpm 버전이설치되어있지않을시위명령어를통해소스버전설치유 / 무를확인합니다.
( 2 ) mod_ssl 모듈확인 [vi 에디터사용법 ] 사용형식 : vi [ 옵션 ] [ 생성할파일명 / 편집할파일명 ] vi 에디터는입력모드, 명령모드, 실행모드로구분됩니다. 입력모드 : vi 편집화면에서문자를입력할수있는모드로서입력모드로진입하기위해서는 i, a, o, I, A, O, R등이있습니다. 즉초기 vi 편집기모드는명령어모드로진입을하기때문에문자를입력하기전에앞의단축키중하나를먼저입력해야원하는문자를입력할수있습니다. 명령모드 : 커서이동 / 문자삭제 / 문자 ( 열 ) 교체 / 문자열검색등을할수있는모드로서입력모드에서편집이완료되면 Esc키를눌러명령모드로진입하면됩니다. 실행모드 : 특별한명령어를실행하는모드로서명령어모드에서 ":"( 콜론 ) 를누르면 vi 화면하단좌측에 vi 특수명령어를입력할수있습니다. [ 실행모드의일반적으로쓰이는특수명령어 ] q : 수정작업이이루어지지않은상태에서 vi 편집기에서빠져나옵니다. q! : 수정작업이이루어진부분을적용시키지않고 vi 편집기를강제로빠져나옵니다. w : 수정된작업을저장합니다. wq : 수정된작업을저장하고 vi 편집기에서빠져나옵니다. 초기명령어모드-> 입력모드진입 -> 편집 -> 명령어모드 -> 실행모드 -> 종료 1 phpinfo 파일생성 [root@nextline ~]#vi /usr/local/apache/htdocs/php_test.php 2 phpinfo 코드설정 <? phpinfo();?>
3 모듈확인 http://xxx.xxx.xxx.xxx/php_test.php ( 3 ) CSR 생성 CSR ( Certificate Signing Request ) 이란? SSL 서버를운영하는회사의정보를암호화하여인증기관으로보내인증서를발급받게하는일종의신청서이며 CSR은 ASCII 텍스트화일로생성됩니다. 1 개인키생성 Openssl 명령어를이용하여웹서버의 RSA키 (1024비트암호화 ) 를생성합니다. 개인키생성시 DES/RSA 암호화방식을선택할수있으나 DES 방식으로개인키를생성하실경우아파치를구동하면개인키생성시입력한패스워드를묻게되며부
팅시아파치데몬이자동으로구동되도록설정하신경우부팅중패스워드를묻게되므로관리의원활함을위해 RSA 방식으로개인키를생성합니다. /usr/local/src 디렉토리로이동하여키생성합니다. [root@nextline ~]# cd /usr/local/src openssl genrsa 1024 > 도메인.key [root@nextline src]# openssl genrsa 1024 > nextline.co.kr.key 2 도메인조회 CSR 정보입력및인증신청서작성시도메인등록업체및도메인조회사이트에서도메인을조회하여조회결과와일치하게정보를입력하여야합니다. http://whois.nic.or.kr [CSR 항목에대한설명 ]
CSR 정보입력시도메인등록업체에등록하신정보와동일한정보를입력합니다. Country Name 이것은두자로된 ISO 형식의국가코드입니다. State or Province Name 시이름을입력해야하며약어를사용할수없습니다. Locality Name 이필드는대부분의경우생략이가능하며업체가위치한곳를나타냅니다. Organization 사업자등록증에있는회사명과일치되는영문회사명을입력하시면됩니다. Organization Unit " 리눅스관리팀 ", " 윈도우관리팀 " 등과같이업체의부서를입력할수있습니다. Common Name 인증받을도메인주소를입력하시면됩니다. 이정보로웹사이트를식별하므로호스트이름을변경할경우다른디지털 ID를요청해야합니다. 호스트에연결하는클라이언트브라우저가디지털 ID의이름과 URL이일치하는지를확인합니다. [CSR 항목입력시주의사항 ] Common Name 에는인증서를설치할사이트의도메인의이름을정확하게입력하셔야하며 IP 주소, 포트번호, 경로명, http:// 나 https:// 등은포함할수없습니다. CSR 항목에는 < > ~! @ # $ % ^ * / ( )? 등의특수 68 문자를넣을수없습니다. CSR 생성후서버에개인키 (Private Key) 가생성됩니다. 개인키를삭제하거나분실할경우인증서를발급받아도설치가불가합니다. 따라서꼭개인키를백업받아두셔야합니다. 정보입력과정마지막에나오는 A challenge password 와 An optional company name 두항목은입력하지마시고 Enter 만누르고넘어가야합니다. 두정보가입력될경우잘못된 CSR 생성될수있습니다. 3 CSR( 인증요청서 ) 생성 [root@nextline src]# openssl req -new -key nextline.co.kr.key > nextline.co.kr.csr
[CSR 정보입력항목 ] Country Name (2 letter code) [AU]:KR State or Province Name (full name) [Some-State]:Seongnam Gyeonggi-do Locality Name (eg, city) []:Yatap-dong Bundang-gu Organization Name (eg, company) [Internet Widgits Pty Ltd]:nextline Organizational Unit Name (eg, section) []:Technological Support Department Common Name (eg, YOUR name) []:nextline.co.kr Email Address []:nextline@nextline.co.kr A challenge password/an optional company name 항목은입력하지않고 Enter만누르고넘어갑니다. Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: 3 CSR 확인 [root@nextline src]# openssl req -noout -text -in nextline.co.kr.csr
( 4 ) 인증서접수 넥스트라인에인증서발급요청시접수양식에따라정보기입후인증서발급을신청합니다. 1 인증서신청정보입력도메인 : nextline.co.kr 상품종류 : 멀티도메인도메인추가등록 : www.nextline.co.kr ( 멀티도메인의경우해당되며추가하실도메인을기입합니다 ) 인증서기간 : 1/2/3 년운영환경 : Apache + Mod SSL CSR 코드입력 : CSR 추출값입력상호명 ( 영문입력 ) : nextline 부서명 ( 영문입력 ) : Technological Support Department 주소상세주소 ( 영문입력 ) : Hostway IDC 343-1 시 / 군 ( 영문입력 ) : Yatap-dong Bundang-gu 시 / 도 ( 영문입력 ) : Seongnam Gyeonggi-do 우편번호 : 463-828 국가 : KR 등록번호 ( 사업자등록번호 / 주민등록번호도메인소유주 ) : 도메인조회시나타나는책임자및사업자정보를입력합니다. 메일주소 ( 인증서수령이메일기입 ) : 도메인조회시나타나있는책임자전자우편을입력합니다. 담당자이름 : 도메인조회시나타나는책임자명을입력합니다. 전화번호 : 도메인조회시나타나는책임자전화번호를입력합니다. 2 CSR 추출 [root@nextline src]# cat nextline.co.kr.csr 생성된 CSR 을출력하면아래와같은 base64 형식의문서를볼수있으며이문서의첫줄 -----BEGIN 부터마지막줄 -----END 까지복사하여인증서신청시 CSR 코드입력란에복사하여붙여넣은뒤입력정보와함께전송후주민등록증사본 ( 개인 )/ 사업자등록증사본 ( 사업자 ) 를팩스로보내주시면접수가완료됩니다.
( 5 ) 인증서설치접수한 CSR 파일이정상적으로생성되었다면별다른문제없이인증서를발급받을수있습니다. 인증서파일은신청시기록한 Email 주소를통해인증서를첨부파일로수신하게됩니다. 1 발급인증서첨부화일확인메일로받은인증서파일의압축을해제하시면인증서및 CA root인증서두개의파일이확인하실수있습니다. 2 ftp 계정생성인증서를서버로업로드하기위해 FTP 계정을생성합니다. 기존 FTP 계정을이용하여도무방합니다.
계정생성 [root@nextline ~]# useradd nextline 계정패스워드설정 [root@nextline ~]# passwd nextline Changing password for user nextline. 패스워드입력 New UNIX password: 패스워드재입력 Retype new UNIX password: passwd: all authentication tokens updated successfully. 3 인증서업로드 FTP 프로그램을이용하여 4393142.crt, 4393142.ca-bundle 파일을업로드합니다. 4 인증서경로로인증파일이동
위파일중 4393142.crt 파일을 SSLCertificateFile 경로로이동합니다. SSLCertificateFile /usr/local/apache/conf/ssl.crt/4393142.crt 4393142.ca-bundle 파일을 SSLCACertificateFile 경로로이동합니다. SSLCACertificateFile /usr/local/apache/conf/ssl.crt/4393142.ca-bundle 위에서생성한개인키 (nextline.co.kr.key) 를 SSLCertificateKeyFile 경로로이동합니다. SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/nextline.co.kr.key 5 웹서버환경설정 [root@nextline src]# vi /usr/local/apache/conf/httpd.conf Apache 1.x + mod_ssll 연동설치시기본적으로 80, 443 포트의설정부분이 므로 Port 80 부분을주석처리하여적용되지않도록합니다. #Port 80 부분주석처리 추가되 일반 http 80 포트접속 VirtualHost 설정
NameVirtualHost xxx.xxx.xxx.xxx:80 <VirtualHost xxx.xxx.xxx.xxx:80> DocumentRoot /home/nextline/public_html ServerName nextline.co.kr </VirtualHost> <VirtualHost xxx.xxx.xxx.xxx:80> DocumentRoot /home/nextline_2/public_html ServerName www.nextline.co.kr </VirtualHost> SSL VirtualHost 멀티도메인설정모든보안가상호스트들의설정은 <IfDefineSSL> 와 </IfDefineSSL> 지시자사이에포함되어야하며 CSR을생성한 netxtline.co.kr 도메인의개인키및인증서, CA root인증서를 www.nextline.co.kr에서도동일하게설정합니다. NameVirtualHost xxx.xxx.xxx.xxx:443 <VirtualHost xxx.xxx.xxx.xxx:443> DocumentRoot "/home/nextline/public_html" ServerName nextline.co.kr SSLCertificateFile /usr/local/apache/conf/ssl.crt/4393142.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/nextline.co.kr.key SSLCACertificateFile /usr/local/apache/conf/ssl.crt/4393142.ca-bundle </VirtualHost>
<VirtualHost xxx.xxx.xxx.xxx:443> DocumentRoot "/home/nextline/public_html" ServerName nextline.co.kr SSLCertificateFile /usr/local/apache/conf/ssl.crt/4393142.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/nextline.co.kr.key SSLCACertificateFile /usr/local/apache/conf/ssl.crt/4393142.ca-bundle </VirtualHost> SSL Virtual Host Context 멀티도메인전체설정 <IfDefine SSL> NameVirtualHost xxx.xxx.xxx.xxx:443 아이피및 https 프로토콜포트443 포트를입력합니다. <VirtualHost xxx.xxx.xxx.xxx:443> 보안서버도메인의홈디렉토리를입력합니다. DocumentRoot "/home/nextline/public_html" 도메인을입력합니다. ServerName nextline.co.kr SSL 엔진을활성화합니다 SSLEngine on SSLCipherSuite
ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL 인증서의경로와파일명을명시합니다. SSLCertificateFile /usr/local/apache/conf/ssl.crt/4393142.crt 개인키경로와파일명을명시합니다. SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/nextline.co.kr.key CA root인증서경로와파일명을명시합니다. SSLCACertificateFile /usr/local/apache/conf/ssl.crt/4393142.ca-bundle <FilesMatch ".(cgi shtml phtml php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/usr/local/apache/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch ".*MSIE.*" 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 xxx.xxx.xxx.xxx:443> 보안서버도메인의홈디렉토리를입력합니다. DocumentRoot "/home/nextline/public_html" 도메인을입력합니다. ServerName www.nextline.co.kr SSL 엔진을활성화합니다 SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL 인증서의경로와파일명을명시하며 nextline.co.kr 도메인과동일한인증서를사용합니다. SSLCertificateFile /usr/local/apache/conf/ssl.crt/4393142.crt 개인키경로와파일명을명시하며 nextline.co.kr 도메인과동일한개인키를사용합니다. SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/nextline.co.kr.key CA root인증서경로와파일명을명시하며 nextline.co.kr 도메인과동일한 CA root
인증서를사용합니다. SSLCACertificateFile /usr/local/apache/conf/ssl.crt/4393142.ca-bundle <FilesMatch ".(cgi shtml phtml php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/usr/ local/apache/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch ".*MSIE.*" 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> </IfDefine> 6 웹서버재실행웹설정파일의오류가없는지체크를합니다. [root@nextline ~]# /usr/local/apache/bin/apachectl configtest Syntax OK [ 정상 ] 웹설정파일을적용하기위해아파치를재가동합니다. Apache 1.x 버전에서는 startssl을이용하여 http, https 모두구동되도록합니다. [root@nextline ~]# /usr/local/apache/bin/apachectl startssl Apache 2.x 합니다. 버전에서는 [start restart] 을이용하여 http, https 모두구동되도록 7 웹서버포트점검 [root@nextline ~]# netstat -anp grep httpd httpd 데몬이 80 / 443 포트로실행됩니다.
8 웹서비스동작상태점검 https://nextline.co.kr 페이지하단을보시면열쇠아이콘이보이게됩니다. 아이콘을클릭하게되면위와같이인증서정보를확인하실수있습니다. 9 인증경로확인
10 웹서비스동작상태점검 https://www.nextline.co.kr 멀티도메인의경우대표도메인의개인키, 인증서, CA root인증서를동일적용되므로 nextline.co.kr 도메인과발급대상, 발급자, 유효기간이동일하게표시됩니다.
11 인증경로확인인증경로역시 nextline.co.kr 도메인과동일하게표시됩니다.