자체인증서 설정관련 – APACHE
SSL 자체인증서 발급하기
- Apache가 설치된 상태에서 시작
yum -y install mod_ssl
mod_ssl 패키지 설치 mod_ssl은 SSL 암호화를 지원하는 아파치 모듈입니다.
아파치 버전 2.4.6
- 포트오픈
firewall-cmd –zone=public –permanent –add-port=443/tcp
firewall-cmd –reload
firewall-cmd –zone=public –list-all
포트가 오픈된것을 확인할 수 있습니다.
- 개인키를 저장할 디렉토리를 생성
mkdir /etc/ssl/private
- 이 디렉토리는 비공개로 유지되어야 하므로 root 계정 이외의 사용 권한을 제거
chmod 700 /etc/ssl/private
- SSL 개인키(.key) 및 인증서(.crt) 파일 생성
openssl req -x509 -nodes -days 999999 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
※ 여기서 openssl req -x509 -nodes -days 999999 의 days 999999 는 인증서 기간을 의미 365와 같은 설정도 가능합니다.
※여기서 중요한것은 Common Name에 아이피나 도메인을 입력합니다.
- 웹 서버와 클라이언트가 보안 협상을 할 때 사용할 디피헬만 그룹을 생성
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
※약 3~5분정도 소요
- SSLOpenSSLConfCmd 명령어 추가
CentOS 7에 제공되는 아파치 버전은 SSLOpenSSLConfCmd 명령이 포함되어 있지 않으므로 이 명령어로 위 파일 내용을 인증서 끝에 직접 추가시켜줘야 합니다.
cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/apache-selfsigned.crt
- 아파치 SSL 설정 파일 편집
vi /etc/httpd/conf.d/ssl.conf
1. ServerName 설정
ServerName 설정에서 주석을 지우고 조금전 인증서를 만들 때 입력했던 아이피나 도메인주소를 똑같이 입력 이 설정은 /etc/httpd/conf/httpd.conf에 있는 설정과 서로 똑같이 맞춰줘야 합니다.
2. 주석처리
#SSLProtocol all -SSLv2 -SSLv3
#SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA
3. 인증서 파일과 키 파일의 경로를 지정
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
- 아파치 HTTP 설정 파일 편집
vi /etc/httpd/conf/httpd.conf
ServerName의 주석을 지우고 SSL 설정 파일의 ServerName 설정에서 적었던 이름(도메인 or 아이피)과 똑같이 설정해줍니다.
- 아파치 설정 파일 오류 확인
apachectl configtest 아래와 같이 ‘Syntax OK’라는 내용만 나와야 합니다.
- 아파치 HTTP 데몬 재시작
systemctl restart httpd 아파치 HTTP 데몬 재시작
- 방화벽에서 HTTPS 포트(TCP 443) 허용
firewall-cmd –permanent –add-service=https
- 방화벽 재시작
systemctl restart firewalld
클라우드 플레어를 이용하여 도메인 연결테스트
- 크롬에서 인증서의 정보가 브라우저가 가지고 있던 정보와는 다른 정보이기 때문에 연결을 할 수 없는 것처럼 보이고 있습니다.
문제가 있는게 아니니 걱정하지 마세요! 브라우저들은 SSL 업체로부터 인증된 키 값을 받아서 상시 업데이트를 하는데,
자체 서명된 인증서의 경우 브라우저 키 값들에 추가되지 않았기 때문에 보증할 수 없다고 나오는 것입니다.
하단에 조그맣게 고급 이라고 쓰여진 부분을 클릭하여 사용자가 위험을 감수해서라도 보겠다 라는 약속을 받아야 정상적인 페이지 보여줍니다.
- Proxy status 에 CDN을 활성화하여(DNSonly) 오리진서버에 직접 연결할 경우
- 클라우드플레어 SSL인증서를 통해 https로 연결이 된것을 확인할수있습니다.
JP-Hosing에서 서비스중인 무제한 방어존 서비스를 통한 SSL연결
None : 오직 HTTP 통신만 사용합니다.
Basic : 방어존과 방문자간의 통신은 암호화 통신(HTTPS)을 하고, 방어존과 웹서버간의 통신은 평문 통신(HTTP)을 사용합니다. (이 경우 웹서버에 별도 SSL 인증서가 필요 없음)
Full : 방어존 과 방문자간의 통신은 물론 방어존 과 웹서버간의 통신 모두 암호화 통신(HTTPS)을 사용합니다. (Full 모드 적용을 위해서는 웹서버에 별도 SSL이 필요)
- 무제한 방어존 서비스는 Full방식으로만 HTTPS통신이 가능합니다.
우선 위 내용 대로 서버내에서 자체인증서 발급이 필요합니다.
- 방어존에 도메인 등록후 발급받은 DNS정보를 연결해줍니다.