CentOs7 SSL인증서 만들기

김재민·2022년 3월 10일
0

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

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개의 댓글