SSL 설치 가이드

Linux 환경
보안서버(SSL)! 선택이 아니라 필수 입니다! 개인정보를 취급하는 모든 웹사이트는 반드시 보안서버를 구축해야합니다.

Apache : SSL 인증서 매뉴얼 Apache 웹 서버에 SSL을 적용하기 위해 아래 두 항목이 웹 서버에 설치되어 있어야 합니다.
- openssl 암호화 라이브러리
- Mod_SSL 모듈
위 두 항목이 웹서버에 설치되어 있다면 개인키를 생성하고 생성된 개인키를 바탕으로 CSR 파일을 생성합니다.
생성된 CSR 파일을 gogetssl.com 에 접수(발송)하여 인증서를 발급받습니다.
발급된 인증서를 웹 서버에 설치하게 되면 SSL 설정을 완료하게 됩니다.

가. SSL 설정을 위한 모듈 확인

1. 아파치 컴파일 mod_ssl 관련 옵션을 추가하였다면 ssl을 따로 설치할 필요는 없습니다.
모듈이 있는지 확인합니다.

[root@ns bin]# vi /usr/local/apache/conf/httpd.conf

Httpd.conf 파일에서 모듈 확인

LoadModule ssl_module modules/mod_ssl.so
나. 개인키 생성 및 CSR 생성

1. conf 폴더 아래 ssl.key 폴더가 없다면 폴더를 생성해 줍니다. ssl.key(ssl_files 등 SSL이 적용될 폴더는 다르게 설정할 수 있음) 폴더로 이동합니다.

[root@ns new_ssl_crt_key]# cd /usr/local/apache/conf/ssl.key/

or

[root@ns new_ssl_crt_key]# cd /usr/local/apache/conf/ssl_files/

2. 개인키 생성
Openssl 명령어를 이용하여 웹서버의 RSA키( 2048비트 암호화 )를 생성합니다.
패스워드를 지정하게 되는데 이때 입력된 패스워드는 추 후 여러 차례 사용되므로 본인만이 알 수 있는 패스워드로 지정해 줍니다.

[root@ns new_ssl_crt_key]# openssl genrsa -des3 -out www.domain.co.kr.key 2048

Generating RSA private key, 2048 bit long modulus

.....................................++++++
......................................++++++

e is 65537 (0x10001)

Enter pass phrase for www.domain.co.kr.key:******

Verifying - Enter pass phrase for www.domain.co.kr.key:*******

3. RSA 로 생성된 개인 KEY값을 확인 할 수 있습니다.
=> 생성된 개인키는 반드시 백업을 받아 놓고 사용하는 것이 좋습니다. 그 이유는 차 후 연장 신청 시 바로 사용할 수 있기 때문입니다.

[root@ns new_ssl_crt_key]# openssl rsa -noout -text –in www.domain.co.kr.key

Enter pass phrase for www.domain.co.kr.key: ******

Private-Key: (2048 bit)

modulus:

    00:95:87:5b:fb:7a:ea:2f:a8:f5:77:1a:28:ba:03:

    38:91:29:21:1a:14:83:5f:9d:db:45:49:9a:55:ad:

    ea:85:66:d9:4d:e7:12:6a:c3:a5:f4:20:ed:4f:88:

    49:10:3f:c9:b3:44:5a:7f:a3:68:0c:3e:cf:2e:83:

    f2:01:75:c1:15:52:fe:ab:b2:62:ea:ad:42:59:b0:

    d9:03:61:4a:d4:95:67:6e:d2:c6:fd:8e:a6:f8:1c:

    00:28:78:1c:b5:7c:b1:f1:89:84:6e:18:4b:54:0c:

    26:4c:e3:de:45:91:ea:18:f3:18:95:39:6f:6c:6f:

    56:46:7c:b2:d5:a5:c5:d3:51

publicExponent: 65537 (0x10001)

중간생략

4. CSR 생성
개인키가 생성이 되었으면 이제 CSR 파일을 생성하겠습니다.

[root@ns new_ssl_crt_key]# openssl req -new -key www.domain.key -out
www.domain.co.kr.csr

Enter pass phrase for www.domain.co.kr.key:******

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) [GB]:KR

State or Province Name (full name) [Berkshire]:Seoul

Locality Name (eg, city) [Newbury]:eunpyeong

Organization Name (eg, company) [My Company Ltd]:domain.co.kr Inc   

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

Common Name (eg, your name or your server's hostname) []:www.domain.co..kr

Email Address []:wls1125@nate.com

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Country Name (2 letter code) [GB] : 국가 코드 입력
State or Province Name (full name) [Berkshire] : 도시 이름
Locality Name (eg, city) [Newbury] : 지역이름 (업체가 위치한 곳)
Organization Name (eg, company) [My Company Ltd] : 회사이름 (사업자 등록증에 있는 회사명과 일치)
Organizational Unit Name (eg, section) [] : 부서이름
Common Name (eg, your name or your server's hostname) [] : 도메인 입력 (앞에 www를 꼭 기입할것 )
Email Address [] : 인증받을 메일
A challenge password []: 아무것도 입력하지 않는다 (Enter)
An optional company name []: 아무것도 입력하지 않는다 (Enter)

5. CSR 정보 확인
생성된 CSR을 아래와 같은 명령어로 확인하면 입력된 CSR 정보를 확인 할 수 있습니다.

[root@ns new_ssl_crt_key]# openssl req -noout -text -in www.domain.co.kr.csr

Certificate Request:

    Data:

        Version: 0 (0x0)

        Subject: C=KR, ST=Seoul, L=eunpyeong, O=xinet Inc, OU=seteam, 
CN=www.domain.co.kr/emailAddress=asef123@naver.com

        Subject Public Key Info:

            Public Key Algorithm: rsaEncryption

            RSA Public Key: (1024 bit)

                Modulus (1024 bit):

                    00:95:87:5b:fb:7a:ea:2f:a8:f5:77:1a:28:ba:03:

                    중간 생략 

6. 인증업체에 CSR 전송

이제 생성된 csr 정보를 도메인 인증 업체에 전송하게 됩니다.
cat 명령어로 정보를 출력 시키며 이문서의 첫 줄부터 마지막 줄까지(--- BEGIN부터 마지막 줄 -----END RSA PRIVATE KEY----- )
모두 복사하여 지정된 SSL 접수 페이지에 복사하여 붙여 넣은 뒤 입력정보와 함께 전송하면 접수가 완료 됩니다.

[root@ns new_ssl_crt_key]# cat www.domain.co.kr.csr

-----BEGIN RSA PRIVATE KEY-----

Proc-Type: 4,ENCRYPTED

DEK-Info: DES-EDE3-CBC,CAC3CF5FCD191B6D

FgLovl2PKotGmHCAPGLcGhmM2AKbydJCzgSw7oWtkS1/P3DwzP4SzOVjYzIWl6fC
VhSX6kyP40Afujh7zj5OLd7t8zmW3HcubcnzN39bPtxc1ObyL1+J8kGdYNOEBqmv
jWOnlWsCjSkUL4vzHAB1ECns3lEUDgQLFxJ05aqskR3gpVEPT8rDHS7OLQfJYFAu
TEXWpeXXD3IoTxL2IqrqORCtuGgcQZDWPZiYQksFOB9Vc6HewI/R4E8bMzdDpjpt
pDcuThrRHJLnJa9qA0/j9Y/HnybiIxZuv+Q5mh2f/K0aH8e/N4e4QFh7BtIZKrSG
-------------------중간 생략 ----------------------------------------------
M3NksVOsWvvYbfmQDYC3TRzdGv0IxlssXV7wiShYtGSXxtcXI5aQaiTQEo4TVJEy
UcTrxBq/7LjA/VkBu6UG0f6xrayseECPhgxg3vZhVexT/Aansliih+bmQGetRkJf
Gi9kSoCkvTJBnIkP3WGT/UQG9M0Eh9KF84AUpm4SfitM+tfKVWoRIy5120T/+S6r\
0/6nF5NT+WEgrbUfW2WL0jmq91QW3KuVDp3PsINTkH5QZkRBbZLeYw==
-----END RSA PRIVATE KEY-----
다. 인증성 서버에 적용하기

서버에서 생성한 키 파일과 인증 업체에서 받은 www_domain_co_kr.crt 파일 및 www_domain_co_kr.ca-bundle 파일을 서버의 .usr/local/apache/conf/ssl.crt 폴더로 업로드 합니다.
Key 파일은 usr/local/apache/conf/ssl.key 폴더로 이동합니다.

# 인증서 및 ca퍼미션 변경
 
[root@ns ssl_crt]# chmod 611 www_domain* 

   →	기존 SSL 설치된 파일이 있을 경우 www_domain_co_kr.crt 를 old_ www_domain_co_kr.crt로 미리 변경해 준다.
   →	www_domain_co_kr.ca-bundle 도 기존 파일이 있을 경우 old_ www_domain_co_kr.ca-bundle로 미리 변경해 준다.

# 개인키 퍼미션 변경 및 암호 해제 

[root@ns ssl_key]# chmod 611 www.domain.co.kr.key

[root@ns ssl_key]# openssl rsa –in www.domain.co.kr.key -out www.domain.co.kr.key
enter pass phrase for out www.domain.co.kr.key: (지정한 패스워드 입력)
writing RSA key

# SSL 세팅  

[root@ns ssl_key]# vi /usr/local/apache/conf/extra/httpd-ssl.conf

   →	문서 제일 하단으로 이동한다. 

<VirtualHost *:3003>
DocumentRoot /free/home/ ID /html
ServerName www. domain.co.kr
ServerAlias domain.co.kr
CBandUser ID
RUidGid ID free
SSLEngine on
SSLCertificateFile /usr/local/apache/conf/ssl_crt/www_domain_co_kr.crt → SSL 인증서
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/www.domain.co.kr.key → 개인키                                                                                                                                 
SSLCertificateChainFile /usr/local/apache/conf/ssl_crt/www_domain_co_kr.ca-bundle → 발급자를 확인할 수 있는 파일이라고 보면 됩니다. 
</VirtualHost>

위와 같이 설정 후에 /Listen 검색하여 Listen 3003 포트를 추가하여 준다. 
“ <VirtualHost *:3003> “ 에서 “ 3003 ”은 포트번호로 SSL이 접속할 때 사용되는 포트이다. 

#Listen 3000 
Listen 3001
Listen 3002
Listen 3003 ←
 
저장하고 나간 후 

# 무결성 체크 및 아파치 재시작  
 
[root@ns ssl_key]# httld -t
syntax OK 

[root@ns ssl_key]# apaachectl restart 를 진행 해준다. (아파치 1.xx 버전은 apachectl stop 후에 apachectl start 해준다)

# SSL 설치 확인  

https//www.domain.co.kr:3003 접속해서 인증서가 나타나는지 확인합니다.