## 설치 환경


- OS : CentOS 6.4

- httpd Server : Apache 2.4.6

- 인증서 발급기관 : COMODO


- 본 설치과정은 "가비아(www.gabia.com)"에서 인증서를 구매 / 발급받는 과정을 전제로 기술되었습니다.



1. Apache 및 OpenSSL 설치

 - http://calflove.tistory.com/335  참고




2. 개인키 생성


1) 랜덤 넘버 생성


# cd /usr/local/openssl/certs

# ../bin/openssl md5 * > rand.dat



2) 키 쌍 생성


# ../bin/openssl genrsa -rand ./rand.dat -des3 2048 > key.pem


- 위 명령을 실행시키면 아래와 같이 개인키 비밀번호를 물어보는데 반드시 기억해야 한다.


48 semi-random bytes loaded

Generating RSA private key, 1024 bit long modulus

..++++++

...++++++

e is 65537 (0x10001)

Enter pass phrase for 2048: {키입력}

Verifying - Enter pass phrase for 2048: {키다시입력}



3) 생성된 키 쌍을 이용하여 CSR 생성


# ../bin/openssl req -new -key key.pem > csr.pem


- CSR 생성시 아래 정보는 모두 영문으로 입력해야 한다.

- 추가 속성 질문에는 건너 뛰어도 무방하다.


Enter pass phrase for key.pem: {개인키비밀번호입력}

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:KR

State or Province Name (full name) [Some-State]:SEOUL

Locality Name (eg, city) []:GANGNAM-GU

Organization Name (eg, company) [Internet Widgits Pty Ltd]:회사명

Organizational Unit Name (eg, section) []:Development

Common Name (e.g. server FQDN or YOUR name) []:호스트명

Email Address []: 메일주소


Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:



- 위에서 Common Name에는 호스트명을 정확히 기재한다. ( SSL 인증서 발급기관에 요청한 호스트명과 일치해야 함)

- 메일주소는 인증메일이 발송되므로 꼭 확인이 가능한 메일주소를 기입한다.




3. CSR 내용을 인증기관에 송부하여 인증서를 발급받는다.


1) 인증메일로 인증코드를 보내주는데 이를 확인해주면 인증서가 메일에 첨부되어 발송된다.


2) 서버에서 생성한 키파일과 인증기관에서 보내온 파일을 아래 명령어로 비교해 보면 똑같아야 한다.


# openssl rsa -in key.pem -modulus -noout | openssl md5

# openssl x509 -in cert.pem -modulus -noout | openssl md5





4. 인증서 설치 


1) 인증서 복사


 - 메일에 첨부되어 있는 인증서를 서버에 복사해 넣는다

   (필자의 경우 아파치 설정 파일이 위치해 있는 /usr/local/httpd/conf/ssl에 넣어두었다 )

 - RootCA_ChainCAs_Basic.zip는 압축을 풀면 2개의 파일이 나오는데, ChainCA.cer은 증계인 인증서(발급기관)이며 RootCA.cer은 최상위인증기관 인증서(루트인증서)이다.


2) SSL 설정 파일 변경


 # cd /usr/local/httpd/conf/extra

 # vi httpd-ssl.conf


아래 내용을 수정한다.


Listen 443


<VirtualHost _default_:443>

DocumentRoot "디렉토리위치"

ServerName 호스트명:443

ServerAdmin 메일주소

ErrorLog "/usr/local/httpd/logs/ssl-error_log"

TransferLog "/usr/local/httpd/logs/ssl-access_log"


인증서가 있는 위치 파일을 지정해준다.


SSLCertificateFile "/usr/local/httpd/conf/ssl/cert.pem"

SSLCertificateKeyFile "/usr/local/httpd/conf/ssl/key.pem"

SSLCertificateChainFile "/usr/local/httpd/conf/ssl/ChainCA.cer"



SSLCertificateFile 은 인증서 파일 경로, 

SSLCertificateKeyFile 은 개인키 파일 경로,

SSLCertificateChainFile 은 중개 인증서이다.


- CSR 파일 / 루트 인증서는 별도 설정안해도 됨.



3) httpd.conf 설정 수정



# cd /usr/local/httpd/conf

# vi httpd.conf


아래 두가지 항목에 주석이 되어 있으면 풀어준다.


LoadModule ssl_module modules/mod_ssl.so

Include conf/extra/httpd-ssl.conf



<IfModule ssl_module>

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

</IfModule>





5. 설정 파일 점검


# cd /usr/local/httpd/bin

# ./apachectl configtest



Case 1) 만약에 아래와 같은 에러가 발생하면.. 


# ./apachectl configtest

AH00526: Syntax error on line 76 of /usr/local/httpd-2.4.6-ssl/conf/extra/httpd-ssl.conf:

SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).


A1) 아래 라인의 주석을 풀어준다. (물론 /usr/local/httpd/modules)에 해당 모듈이 있어야 한다.


LoadModule socache_shmcb_module modules/mod_socache_shmcb.so



A2) 만약 SSL 캐쉬를 안 쓰려면 아래와 같이 옵션을 none으로 해 둔다. 


SSLSessionCache         none

#SSLSessionCache         "dbm:/usr/local/httpd-2.4.6-ssl/logs/ssl_scache"

#SSLSessionCache        "shmcb:/usr/local/httpd-2.4.6-ssl/logs/ssl_scache(512000)"

#SSLSessionCacheTimeout  300





6. 보안 환경 설정


1) 네트워크 방화벽 설정


신규로 SSL 쓴다면 443포트가 막혀있을 가능성이 크다. 외부에서 서버로 443 포트가 접속이 가능하도록 네트워크 방화벽을 열어준다. 


2) 시스템 방화벽 설정


시스템에도 방화벽이 설치되어 있는 경우가 많을 텐데 시스템에서도 443 포트를 열어준다.


# lokkit --service https





7. 아파치 기동



# cd /usr/local/httpd/bin

# ./apacehctl start

Apache/2.4.6 mod_ssl (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 호스트명:443 (RSA)
Enter pass phrase:  


- 인증서 생성시 사용했던 키를 넣어준다.


- 인터넷 검색을 하다보면 # apachectl 뒤에 startssl|sslstart|start-SSL 옵션을 쓰는 경우가 있는데

  현재는 더이상 지원하지 않으며 start해주면 된다.




참고 자료


1. https://kicassl.com/intro/installguide.php ( SSL 설치 가이드 )

2. https://sslhosting.gabia.com/service ( SSL 설치가이드)

3. http://talkit.tistory.com/111 (SSL 캐쉬로 인한 속도 저하) 

Posted by 카프러브