개발/Backend

Apache SSL 적용

HuiYa 2019. 6. 21. 09:46

2019-02-22 17:50 최초작성
2019-02-25 15:08 SSL 인증서와 실제 Hostname이 같지 않다는 오류 해결책 추가
2019-02-27 15:06 self-signed SSL이 아니라 공인 SSL 사용시 적용법 추가

 

기존 패키지로 설치한 아파치에 CC 적용을 위해 사설 SSL 인증서를 만들어 적용시켰다.

 

  1. ssl.sh 스크립트를 돌려 인증서를 생성한다.
    참고 링크 - https://www.lesstif.com/pages/viewpage.action?pageId=6979614
    (self-signed 인증서를 생성하는 스크립트)
    링크 내용과 동일하니 링크를 참조해도 된다
  2. 아파치에 SSL 모듈을 설치한다.
    yum install mod_ssl -y
    모듈 설치 확인은 apachectl -M 명령어를 통해 가능하다.
    설치 확인 예시 - apachectl -M | grep ssl
  1. 2-1. yum 오류 발생모듈 설치 중 위와 같은 오류가 발생하였다.
  2. 이는 리눅스 자체의 네트워크 설정 문제다.
    참고 링크 - https://serverfault.com/questions/904304/could-not-resolve-host-mirrorlist-centos-org-centos-7
    /etc/resolv.conf 파일에 nameserver 8.8.8.8 (구글 DNS서버) 을 추가하여 해결했다.
  3. 14: curl#6 - "Could not resolve host: [mirrorlist.centos.org;](mirrorlist.centos.org;) 알 수 없는 오류"
  4. 아파치 설정에 443 포트 추가
    /etc/httpd/conf/httpd.conf 파일에 Listen 433 https 옵션을 추가했다.
    이는 아파치에서 해당 포트를 사용하겠다는 의미다.
  5. vhost 설정
    서버에서 vhost를 사용하기 때문에 /etc/httpd/conf.d/vhost.conf 파일에 SSL 관련 설정을 추가했다.
  6. SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCertificateFile /root/ssl/server.crt SSLCertificateKeyFile /root/ssl/server.key SSLCACertificateFile /root/ssl/rootca.crt Header always set Strict-Transport-Security "max-age=15768000"
  7. 아파치 재시작.
  8. 기타.
    firewalld 등 방화벽에 https 혹은 443포트가 열려있는지 확인해야함.
    http를 막는건 별도의 설정이 필요함. 현재 상태로는 Bad Request 오류 페이지 나옴.
  1. 기타2.
    VirtualHost에서 SSL를 제공할 경우 아파치 로그에 SSL인증서의 설정이 요청된 Hostname과 다르다는 오류 발생
    아래 내용 참고.
    https://www.lesstif.com/pages/viewpage.action?pageId=19365977
     SSLCertificateFile /root/SSL/_wildcard_.boan365.com.crt  
     SSLCertificateKeyFile /root/SSL/_wildcard_.boan365.com.key  
     SSLCertificateChainFile /root/SSL/chain-bundle.pem
     SSLCACertificateFile /root/SSL/COMODORSAAddTrustCA.crt
  2. 공인 SSL 사용시 적용법.
    기존 vhost뿐만 아니라 ssl.conf 중 아래 옵션에도 적용해야 한다.
    ds.boan365.com에서는 ssl.conf가 없이 vhost만으로도 작동하는데 내부 서버는 왜 ssl.conf가] 있어야 하는건지 모르겟음ㅠㅠ