오늘은 https 환경 구축에 대한 내용을 정리하려 한다.
하지만 설정 전에 알아둬야할 점이 있다. https에서 사용되는 인증서에 대해서 공인 인증된 인증서를 사용해야 https://~~ 이러한 url로 접속 했을 때 안전한 컨텐츠라고 인식해서 다른 사이트처럼 잘 보여진다. 서버에서 자체적으로 인증서 발급 받아서 https로 사용할 수 있지만 이 인증서를 사용하게 되면 안전하지 않은 콘텐츠를 포함할 수 있다 머라머라 하면서 바로 페이지 랜딩이 되지 않는다.
이 공인 인증된 인증서를 사용하려면 COMODO, GeoTrust, VeriSign 등등 공인인증 발급 회사가 있다. 이 회사들에게 일정 금액을 지불하고 공인인증서를 발급 받아서 ssl.conf 파일에 적용해야 한다. 가격 측정은 도메인 수, 배상금 등에 따라 다르다.
(가격은 COMODO가 싼 편인 것 같다. 경제형의 경우 1년 65,000원 2년 100,000원 3년 165,000원)
하지만 개인 공부의 목적에 경우 https로 아예 접근이 안 되는 건 아니니까 구축해보는 경험도 나쁘지 않은 것 같다.
https 구축 순서는 아래와 같다.
1. openssl 패키지 설치 및 현재 폴더 위치 변경
yum -y install openssl
cd /etc/pki/tls/certs/
2. 키 생성
openssl genrsa -out http.key 2048
3. 인증서(CSR) 만들기
openssl req -new -key http.key -out http.csr
1~7번까지는 각각 국가코드(kr), 시 이름(Seoul), 시/군/구(Gangnam), 회사명( ... ), 부서명( ... ), 서비스 도메인명(www.smaprkworld.com), 이메일 주소(park97.sm@gmail.com)를 입력한다. 마지막에 나오는 A challenge password와 An optional company name 두가지 항목은 아무 입력 값 없이 Enter 입력한다.
4. 키 인증서 병합
openssl x509 -req -days 365 -in http.csr -signkey http.key -out http.crt
days 365 -> SSL 유효기간 365일을 의미
5. SSL 모듈 설치
yum -y install mod_ssl
6. ssl.conf 설정
vi /etc/httpd/conf.d/ssl.conf
7. 웹 서버 데몬 재시작
systemctl restart httpd
추가1. firewall-cmd
firewall-cmd --list-all 명령어를 통해 443/tcp 열려 있는지 확인. 없으면 firewall-cmd --permanent -add-service=443/tcp
입력. 후 firewall-cmd --reload
로 방화벽 재시작.
추가2. selinux
semanage port -l | grep http_port_t
명령어를 통해 selinux에서 포트 열려 있는지 확인. 없으면 semanage port -a -t http_port_t -p tcp 443
입력.