http://egloos.zum.com/guswl47/v/6514311
SSL 이란 Secure Socket Layer 의 약자로 인터넷 상에서 정보를 암호화하여 송수신하는 프로토콜로
현재 인터넷에서 널리 쓰여지고 있는 HTTP나 FTP 등의 데이터를 암호화하여 기업 비밀이나 개인 정보 등을 안전하게 송수신할 수 있다
SSL 특징
공개키 암호나 비밀키 암호, 디지털 증명서, 해쉬함수 등의 보안 기술을 조합하여 데이터 도청이나 변경, 위장을 방지할 수 있으며 OSI 4,5 계층의 경계에서 동작하여 HTTP나 FTP 등 상위 프로토콜을 이용하는 S/W 에서는 특별히 의식하지 않고도 이용할 수 있다
구축 방법
1. 필요한 패키지 설치
SSL 암호화를 위해서는 openssl 과 mod_ssl 이 필요한데 6.4 버전 이후로는 openssl이 자동 설치되어있으므로
yum -y install mod_ssl 명령어를 사용하여 mod_ssl 만 마저 설치해주면 된다
(openssl 이 설치 되어있는지 확인하기 위해서는 yum list installed openssl 명령어를 사용하면 된다)
2. self-signed certificate 생성
SSC 란 인증서를 만들고 개인키로 직접 인증서에 서명하는 것으로
openssl 을 이용해 self-signed certificate 를 생성한다
(원래는 이러한 인증서는 사서 사용해야 하지만 개인 웹 사이트라면 self-signed certificate 로도 가능하다)
<openssl 을 이용한 인증서 생성 과정>
2-1. 개인 키 생성
#openssl genrsa -out ca.key 1024
2-2. CSR (Certificate Signing Request) 생성 -> CSR 은 인증서 서명 요청을 의미
쉽게 말해 인증서 발급 받기 위해 '나는 누구이고 키 값은 이 값이다' 하는 사용 정보를 저장하고 있다
#openssl req -new -key ca.key -out ca.csr
※ 사용자명 혹은 서버 호스트명은 뒤에서 쓰이니 자기가 지정한 이름 명을 알아둬야한다
2-3. self signed key 생성
#openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
3. 다음 위치에 파일들을 복사
#cp ca.crt /etc/pki/tls/certs
#cp ca.key /etc/pki/tls/private/ca.key
#cp ca.csr /etc/pki/tls/private/ca.csr
다음과 같은 위치로 파일들을 복사해주는 이유는 해당 디렉터리에 위치해야만 SSL 서비스를 제대로 제공해줄 수 있기 때문이다
4. SELinux에 의해 Certificate file 들이 삭제 될 수 있으므로 삭제됐을 시에는
다음과 같은 명령어를 사용하여 삭제 된 구문을 복구 시킬 수 있다
#restorecon -RvF /etc/pki
/etc/pki/* 하위의 모든 폴더나 파일에서 삭제된 구문을 복원한다
5. 아파치 ssl 설정을 변경하기 위한 수정
# vi /etc/httpd/conf.d/ssl.conf
위의 두 구문을
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key 로 고쳐준다
그리고 서비스에 적용시키기 위해 재시작해준다
#service httpd restart
6. 모든 설정이 끝난 뒤 SSL 은 암호화 위해 443번 포트를 사용하기 때문에 이를 위해서 virtualhost 를 추가한다
#vi /etc/httpd/conf/httpd.conf
파일을 연 뒤 맨 마지막에 아래와 같은 구문을 추가 해준다
NameVirtualHost *:443
이 또한 적용시키기 위해 #service httpd restart 명령으로 서비스 재시작
7. 443 포트 방화벽 설정
#vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT 구문 추가
#service iptables restart 서비스 재시작
이로써 모든 구축은 끝이 났다
확인 테스트 방법은 웹 브라우저에
https://자기 ip 주소 or 127.0.0.1 입력 -> 인증서 오류 발생 -> 추가 정보 클릭 -> 정상적인 아파치 웹 페이지 화면 출력