작업 전 참고사항
이 문서는 SSL 인증서 설치를 위한 설정이며 관련 없는 설정은 부분적으로 생략하였습니다.
서버마다 설정이 상이할 수 있어 인증서 설치 시 해당 문서 참고 부탁드립니다.
1. Apache package 및 source 구분
Apache 경로 확인 명령어
ps –ef | grep httpd
•
package
/usr/sbin/httpd [apache이름은 상이할 수 있음] → /etc/httpd 경로에 설정 존재
•
source
/usr/local/apache [경로 및 apache이름은 상이할 수 있음] → 확인 경로에 설정 존재
2. 인증기관 Root & Chain 인증서 구분
※ 인증기관별 하단의 링크를 참고해주세요.
진행 과정
1. 발급 받으신 인증서를 해당 SSL 폴더에 업로드 또는 저장합니다.
2. ssl.conf 파일을 수정합니다. 3개의 도메인을 하나의 인증서로 적용합니다.
※ 필요한 문구만을 출력하였습니다. 기존 설정 내용과 상이할 수 있는 점 유의바랍니다.
[root@localhost httpd]# vi conf.d/ssl.conf
LoadModule ssl_module modules/mod_ssl.so
#설명 : SSL 모듈을 불러오는 설정입니다.
Listen 443
#설명 : 사용할 SSL 포트번호를 적용 합니다. 멀티 인증서의 경우 동일한 포트 사용이 가능하며 싱글 인증서 및 동일한 서버의 다른 프로세스에서 사용중인 포트에 중복 적용은 불가합니다.
----중략-----
SSLHonorCipherOrder on
#설명 : 서버가 호환할 수 있는 가장 높은 보안 연결 설정을 시도하도록 하는 설정
이 옵션을 ‘on’ 으로 할 경우, 네트워크 환경에 따라 SSL속도가 느려질 수 있어
해당 경우, ‘off’로 변경하시기 바랍니다.
NameVirtualHost *:443
<VirtualHost *:443>
#설명 : www.ucert.co.kr SSL 설정 합니다.
DocumentRoot "/var/www/html"
#설명 :도메인 홈 디렉토리를 설정 합니다.
ServerName www.ucert.co.kr:443
#설명 : 설치가 필요한 도메인 이름과 포트를 기재 합니다.
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
#설명 : SSL을 사용합니다.
SSLProtocol all -SSLv2
#설명 : SSL 프로토콜 설정을 합니다.
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/httpd/conf.d/ssl/File_www.ucert.co.kr.crt
#설명 : 인증서 경로 설정 및 파일 명을 확인
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/KeyFile_www.ucert.co.kr.key
#설명 : 개인키 경로 설정 및 파일 명을 확인
SSLCertificateChainFile /etc/httpd/conf.d/ssl/ChainFile_ChainBundle.crt
#설명 : Chain 인증서 경로 설정 및 파일 명을 확인
SSLCACertificateFile /etc/httpd/conf.d/ssl/CA_GLOBALSIGN_ROOT_CA.crt
#설명 : Root 인증서 경로 설정 및 파일 명을 확인
----중략-----
</VirtualHost>
<VirtualHost *:443>
#설명 : dev.ucert.co.kr SSL 설정을 합니다.
DocumentRoot "/var/dev/html"
#설명 :dev 홈 디렉토리 설정을 합니다.
ServerName dev.ucert.co.kr:443
#설명 : www가 아닌 dev 도메인 이름을 기입 합니다.
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
#설명 : SSL을 사용 합니다.
SSLProtocol all -SSLv2
#설명: SSL 프로토콜 설정을 합니다.
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/httpd/conf.d/ssl/File_www.ucert.co.kr.crt
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/KeyFile_www.ucert.co.kr.key
SSLCertificateChainFile /etc/httpd/conf.d/ssl/ChainFile_ChainBundle.crt
SSLCACertificateFile /etc/httpd/conf.d/ssl/CA_GLOBALSIGN_ROOT_CA.crt
#설명 : 인증서 위치는 www.ucert.co.kr 도메인과 동일한 위치로 지정 합니다.
----중략-----
</VirtualHost>
<VirtualHost *:443>
#설명 : aka.ucert.co.kr SSL 설정입니다.
DocumentRoot "/var/aka/html"
ServerName aka.ucert.co.kr:443
#설명 : www가 아닌 aka 도메인 이름을 기입합니다
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/httpd/conf.d/ssl/File_www.ucert.co.kr.crt
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/KeyFile_www.ucert.co.kr.key
SSLCertificateChainFile /etc/httpd/conf.d/ssl/ChainFile_ChainBundle.crt
SSLCACertificateFile /etc/httpd/conf.d/ssl/CA_GLOBALSIGN_ROOT_CA.crt
#설명 : 인증서 위치는 www.ucert.co.kr 도메인과 동일한 위치로 지정토록 합니다. (원한다면 다른 위치의 파일 사용가능.)
----중략-----
</VirtualHost>
3. 지정되어 있는 기존 인증서 경로에 신규 인증서를 업로드합니다.
※ 인증서 파일의 파일명은 예시이므로 사용자 설정에 따라 인증서 파일명이 달라질 수 있습니다.
[root@localhost httpd]# ls -al /etc/httpd/conf.d/ssl
- rw-r--r--. 1 root root 1931 Feb 22 00:00 ChainFile_ChainBundle.crt
- rw-r--r--. 1 root root 1744 Feb 22 00:00 File_www.ucert.co.kr.crt
- rw-r--r--. 1 root root 1931 Feb 22 00:00 KeyFile_www.ucert.co.kr.key
- rw-r--r--. 1 root root 1931 Feb 22 00:00 CA_GLOBALSIGN_ROOT_CA.crt
- rw-r--r--. 1 root root 1744 Feb 22 00:00 password.txt
#설명 : 해당 위치에 인증서가 있는 지 확인합니다.
[root@localhost httpd]# mkdir /etc/httpd/conf.d/ssl/20180222
[root@localhost httpd]# cp /etc/httpd/conf.d/ssl/* /etc/httpd/conf.d/ssl/20180222
[root@localhost httpd]# ls -al /etc/httpd/conf.d/ssl/20180222
- rw-r--r--. 1 root root 1931 Feb 22 00:00 ChainFile_ChainBundle.crt
- rw-r--r--. 1 root root 1744 Feb 22 00:00 File_www.ucert.co.kr.crt
- rw-r--r--. 1 root root 1931 Feb 22 00:00 KeyFile_www.ucert.co.kr.key
- rw-r--r--. 1 root root 1931 Feb 22 00:00 CA_GLOBALSIGN_ROOT_CA.crt
#설명 : ssl 디렉토리의 인증서를 20180222 디렉토리에 백업을 진행하고 백업을 확인합니다.
[root@localhost httpd]# cp conf.d/ssl_new/* cp conf.d/ssl/
#설명 : 신규 업데이트한 인증서 파일을 기존 인증서 폴더에 저장합니다.
4. 아파치 프로세스 재시작을 진행합니다.
[root@localhost httpd]# /usr/sbin/apachectl -t
Syntax OK
#설명 : 설정 문법에 오류가 없는 지 확인 합니다.
[root@localhost httpd]# /usr/sbin/apachectl -v
#설명 : 아파치 버전을 확인 합니다.
※ 비밀번호가 설정 된 인증서라면 재시작 시 비밀번호 입력을 합니다.
비밀번호가 제거 된 인증서 사용 시 비밀번호 입력이 불필요합니다.
[root@localhost httpd]# bin/apachectl stop
[root@localhost httpd]# bin/apachectl start
[root@localhost httpd]# bin/apachectl restart
#설명 : 아파치 재시작을 진행 합니다.
※ 재기동 명령어는 서버마다 상이하여 명령어 확인 후 진행이 필요합니다.
[root@localhost httpd]# ps -ef | grep httpd
#설명 : 아파치 데몬 확인을 진행 합니다.
root 117031 1 0 Feb20 00:00:03 /usr/sbin/httpd
daemon 117032 117031 0 Feb20 00:00:00 /usr/sbin/httpd
daemon 117033 117031 0 Feb20 00:00:00 /usr/sbin/httpd
daemon 117034 117031 0 Feb20 00:00:00 /usr/sbin/httpd
daemon 117121 117031 0 Feb20 00:00:00 /usr/sbin/httpd
root 118682 117620 0 01:22 pts/1 00:00:00 grep httpd
[root@localhost httpd]# netstat -nlp | grep httpd
#설명 : 적용한 SSL 포트의 Listen 여부를 확인 합니다.
tcp 0 0 :::80 :::* LISTEN 118721/httpd
tcp 0 0 :::443 :::* LISTEN 118721/httpd
5. 인증서 설치를 확인합니다.
[root@localhost ~]# echo "" | openssl s_client -connect localhost:443 | openssl x509 -noout -dates
#설명 : 위의 명령어를 입력하여 인증서 갱신 날짜를 확인 합니다.
notBefore=Jan 1 00:24:14 2018 GMT #인증서 시작일
notAfter=Dec 31 :38:20 2019 GMT #인증서 만료일
※ 명령어 형식 : echo "" | openssl s_client -connect [도메인 or IP]:[포트번호] | openssl x509 –noout -dates
인증서 확인하기
- 웹페이지에서의 인증서 확인 방법
※ 도메인 접속 후,
‘Alt 키’ 누르기 → ‘파일 > 속성 > 인증서’ 클릭 → 인증서 보기를 선택 하시면 인증서 정보를 확인 할 수 있습니다.
※ 발급 대상과 유효 기간이 맞는지 확인합니다.