목차

SSL(https) 적용 가이드

  • description :
  • author : 김토피아
  • email : kimmk@repia.com
  • lastupdate : 2021-01-19

요청, 질문

SSL 이란?

SSL은 Secure Socket Layer의 약자
HTTPS는 Hypertext Transfer Protocol의 약자 보통 443 포트를 사용
SSL를 사용하여 HTTP 프로토콜의 보안 버전

준비과정(서버 작업 전)

기존에 apache(httpd)에 적용이 된 경우라면 재부팅 시 암호를 요구 할 수 있으므로 꼭 암호 확보 후 작업 진행 할것
암호를 모를 경우 apache(httpd)는 종료 할 수 있으나 시작 할 수 없음

0. 기본적으로 https 작업은 홈페이지 업체에 요청하며 담당자와 업체에서 작업진행을 매우 회피 할 경우 지원 ( 검색엔진의 유지보수 범위는 검색엔진까지 )
1. apache가 독립적으로 있을 때만 작업하며, 타 솔루션 또는 홈페이지가 같이 사용 중인 경우에는 검색엔진에서 절대 작업하지 않는다.
2. 담당자에게 key파일, crt 파일을 받는다. (암호도 있는지 확인 한다. apache가 재시작 할때 암호를 묻는 인증서가 있음)
3. search.도메인.go.kr 인 경우에는 와일드카드 사용이 가능한 파일을 달라고 요청
4. root 계정 필수

준비과정(서버 작업)

1. OS 및 apache 버전 확인
[root@search] cat /etc/redhat-release
CentOS release 6.7 (Final)
 
[root@search] httpd -version
Server version: Apache/2.2.15 (Unix)
Server built:   Jun 19 2018 15:45:13
2. 기존 파일 백업
[root@search] cd /etc/httpd/
[root@search] cp -rf conf conf_20210118
[root@search] cp -rf conf.d conf.d_20210118

적용과정(서버 작업)

1. ssl module 확인 (mod_ssl.so 파일 확인)
[root@search] cd /etc/httpd/modules/
[root@search] ls -al mod_ssl.so
 
# mod_ssl.so가 없을 경우에 /etc/httpd/conf.d/ssl.conf도 같이 없음
# mod_ssl.so 설치는 yum으로 설치 진행
 
[root@search] yum install mod_ssl
 
# OS가 노후 됐다면 아래의 오류가 발생 할 수 있음 (CentOS 6.7 기준)
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Determining fastest mirrors
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. $ echo "https://vault.centos.org/6.10/updates/x86_64/" > /var/cache/yum/x86_64/6/updates/mirrorlist.txt/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: base
#해결방안 (각 오류에 대해서는 google에 자료가 많이 있습니다.)
[root@search] echo "https://vault.centos.org/6.10/os/x86_64/" > /var/cache/yum/x86_64/6/base/mirrorlist.txt
[root@search] echo "https://vault.centos.org/6.10/extras/x86_64/" > /var/cache/yum/x86_64/6/extras/mirrorlist.txt
[root@search] echo "https://vault.centos.org/6.10/updates/x86_64/" > /var/cache/yum/x86_64/6/updates/mirrorlist.txt
2. SSL 설치 완료 후 443 포트 동작 확인
# 아파치 재시작 ( 특별한 오류가 없다면 [ OK ] 메시지와 함께 프로세스 정상 구동
# 검색페이지 서비스 되는지 확인
[root@search] service httpd restart
#포트로 확인
[root@search] netstat -anlp | grep 443
tcp        0      0 :::443                      :::*                        LISTEN      7326/httpd
unix  3      [ ]         STREAM     CONNECTED     17443  2786/gdm-simple-gre
#Telnet으로 확인
#Escap character is 가 보이면 포트 활성화
[root@search] telnet 127.0.0.1 
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

> 3. ssl.conf 파일 수정

# 변경이 된 부분만 수정
[root@search] vi /etc/httpd/conf.d/ssl.conf
 
<VirtualHost _default_:443> 
⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩
<VirtualHost *:443>
#####################################################
 
ServerName www.example.com:443
⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩
ServerName search.jbe.go.kr
ServerAlias search.jbe.go.kr
 
######################################################
 
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩
SSLCertificateFile /etc/httpd/conf.d/star_jbe_go_kr_cert.pem
 
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩⇩
SSLCertificateKeyFile /etc/httpd/conf.d/star_jbe_go_kr_key.pem
 
######################################################
 
# 추가 작성 부분
# </VirtualHost> 위에 추가
 
    223 #Configure mod_jk
    224 JkLogFile /var/log/httpd/mod_jk.log
    225 JkLogLevel info
    226
    227 JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
    228 JkRequestLogFormat "%w %V %T"
    229
    230 #Root context
    231 JkMount /*.jsp ajp13
    232 JkMount /*.do ajp13
 

Doc