CentOs7 SSL인증서 만들기

김재민·2022년 3월 10일

웹에서 인증서 암호화 통신 과정

1. 클라이언트가 HTTPS 프로토콜을 이용해 웹서버에 암호화 통신 요청

2. 웹서버가 클라이언트에게 인증서(공개키) 전송

3. 클아이언트가 인증서에 담긴 웹서버 기본 정보 및 해시값등을 읽고, 그 인증서를 신뢰할 수 있을경우 
   공유키 생성

4. 클라이언트가 공유키를 웹서버 인증서로 암호화한 뒤 웹서버에 전송

5. 웹서버가 암호화된 공유키를 자신의 개인키로 복호화하여 획득

6. 이제 클라이언트와 웹서버가 서로 똑같은 공유키를 가지고 있으므로 그 공유키를 모든 데이터를 암호화하여 통신

  1. yum -y install mod_ssl

    mod_ssl 패키지 설치, mod_ssl은 SSL 암호화를 지원하는 아파치 모듈

  2. mkdir /etc/ssl/private

    개인키를 저장할 디렉토리를 만듬

  3. chmod 700 /etc/ssl/private

    이 디렉토리는 비공개로 유지되어야하므로 root 계정 이외의 사용 권한을 없앰

  4. openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

    	SSL 개인키(.key) 및 인증서 (.crt) 파일 생성
     openssl : SSL키를 생성하고 관리하기 위한 명령어 도구
     
     req -x509 : X.509 관리 사용. X.509는 키 및 인증서 관리를 위해 SSL/TSL을 준수하는 공개키 표준 인프라
     
     -nodes : 인증서 보호 암호 생략
     
     -day 365 : 인증서 유효기간을 1년으로 설정
     
     -newkey rsa:2048 : 길이가 2048 비트인 RSA키 생성
     
     -out : 생성될 인증서 경로 지정
     

    후에
    Country Name 및 기타(FQDN) 정보들 입력

    -> 생성된 키파일과 인증서는 'etc/ssl' 디렉토리에 있는 각 하위 디렉토리에 저장

  5. openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    웹 서버와 클라이언트가 보안 협상을 할 때 사용할 디피헬만 그룹을 생성

  6. cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/apache-selfsigned.crt
    CentOS 7에 제공되는 아파치 버전은 SSLOpenSSLConfCmd 명령이 포함되어 있지 않으므로 이 명령어로 위 파일 내용을 인증서 끝에 직접 추가시켜줘야됨

  7. vi /etc/httpd/conf.d/ssl.conf
    아파치 SSL 설정 파일 편집

    ServerName 192.168.219.105: 443

    ServerName 설정에서 주석을 지운 후 서버 IP를 똑같이 적는다.
    /etc/httpd/conf/httpd.conf에 있는 설정과 서로 똑같이 맞춰줘야 한다.

    75 #SSLProtocol all -SSLv2 -SSLv3
    80 #SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!DEA

    100 SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
    107 SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key

    인증서 파일과 키 파일의 경로를 지정함

    vi /etc/httpd/conf/httpd.conf
    아파치 HTTP 설정 파일 편집

    94 ServerName 192.168.111.200:80

    주석을 지우고 SSL 설정 파일의 ServerName 설정에서 적었던 이름과 똑같이 적어줌

    apachetl configtest

    -> 아파치 설정 파일 오류

    systemctl restart httpd

    -> 아파치 HTTP 데몬 재시작

    firewall-cmd --permanent --add-service=https
    -> 방화벽에서 HTTPS 포트(TCP 443)

    systemctl restart firewalld
    -> 방화벽 재시작

    이제 클라이언트 PC인 윈도우 10에서 CentOS 7의 인증서(/etc/ssl/certs/apache-selfsigned.crt)를 복사하여 옮김

    아직 '신뢰할 수 없는 인증서'인 상태이기 때문에 파일을 열고 '인증서 설치'를 누른다.

profile
어제의 나보다 나은 오늘의 내가 되자!🧗‍♂️

0개의 댓글