자체인증서 설정관련 – 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



클라우드 플레어를 이용하여 도메인 연결테스트

  • Proxy status 에 CDN을 비활성화하여(DNSonly) 오리진서버에 직접 연결할 경우


    • 크롬에서 인증서의 정보가 브라우저가 가지고 있던 정보와는 다른 정보이기 때문에 연결을 할 수 없는 것처럼 보이고 있습니다. 
      문제가 있는게 아니니 걱정하지 마세요! 브라우저들은 SSL 업체로부터 인증된 키 값을 받아서 상시 업데이트를 하는데,
      자체 서명된 인증서의 경우 브라우저 키 값들에 추가되지 않았기 때문에 보증할 수 없다고 나오는 것입니다.

      하단에 조그맣게 고급 이라고 쓰여진 부분을 클릭하여 사용자가 위험을 감수해서라도 보겠다 라는 약속을 받아야 정상적인 페이지 보여줍니다.
    • Proxy status 에 CDN을 활성화하여(DNSonly) 오리진서버에 직접 연결할 경우
    • 클라우드플레어 SSL인증서를 통해 https로 연결이 된것을 확인할수있습니다.

    JP-Hosing에서 서비스중인 무제한 방어존 서비스를 통한 SSL연결

    None : 오직 HTTP 통신만 사용합니다.
    Basic : 방어존과 방문자간의 통신은 암호화 통신(HTTPS)을 하고, 방어존과 웹서버간의 통신은 평문 통신(HTTP)을 사용합니다. (이 경우 웹서버에 별도 SSL 인증서가 필요 없음)
    Full : 방어존 과 방문자간의 통신은 물론 방어존 과 웹서버간의 통신 모두 암호화 통신(HTTPS)을 사용합니다. (Full 모드 적용을 위해서는 웹서버에 별도 SSL이 필요)



    • 무제한 방어존 서비스는 Full방식으로만 HTTPS통신이 가능합니다.
      우선 위 내용 대로 서버내에서 자체인증서 발급이 필요합니다.
    • 방어존에 도메인 등록후 발급받은 DNS정보를 연결해줍니다.
    Powered by Blogger.