[HTTPS] Ubuntu/Apache2 SSL 인증서 설치

H.yeong·2022년 12월 8일
2
post-thumbnail

⚡ 서버 :: 리눅스, Ubuntu/Apache2

📃 SSL인증서 구매처 :: 가비아

🔖 도메인 :: 메일플러그


🌵 1. SSL 인증서 구매 / 인증 절차

브랜드/인증등급에 따라 여러 종류의 인증서가 있는데...사이트 규모에 맞게 적당히 구매함.

CSR 생성

인증서 발급을 위한 정보(도메인, 회사명, 담당자 등)를 담은 데이터로 서명요청을 하는건데...
인증서 구매 직후 My가비아 페이지에서 CSR 생성으로 연결되는 콘솔버튼이 생성됨.
WHOIS에 등록된 정보대로 도메인과 회사정보를 입력하면 됨.
📌 가비아 CSR 생성 가이드 >> https://customer.gabia.com/manual/hosting/433

인증서를 인증하란다...

인증방법은 총 3가지

  • 메일 >> WHOIS에 등록된 이메일로 인증메일 받기
  • 웹(HTTP) >> 가비아에서 제공하는 텍스트파일을 서버에 업로드
  • DNS 레코드 >> 네임서버에 가비아에서 제공한 레코드 값을 등록

세가지 방법 모두 시도해보고 알차게 시간 낭비해 본 결과 메일 인증이 가장 빠르고 간편하다.
인증서 구매 직후 인증방법을 고를 때 메일 인증을 선택하면서 WHOIS 이메일로 지정하면 된다.
(WHOIS 에 도메인을 조회하여 이메일 확인.)

📌가비아 웹 인증 가이드 >> https://customer.gabia.com/manual/hosting/434

혹시나 다른 인증방법을 시도했다가 잘 되지않아 후에 메일인증을 하게 된다면(나처럼)
그때는 WHOIS 등록 이메일로 고를 수가 없다...(나처럼)당황하지 말고 고객센터에 문의하면 됨.

메일 인증을 끝내면 가비아에 등록한 관리자메일로 인증서 다운로드 링크와
개인키 파일이 첨부된 메일을 받을 수 있다.
이 파일들을 전부 서버에 업로드 하면 된다. (SFTP or FTP 사용)

📂 파일 구성
파일구성과 파일명은 발급처에 따라 달라진다.

 도메인_key.pem               >>  개인키파일
 CA_GLOBALSIGN_ROOT_CA.crt   >>  루트인증서
 ChainFile_ChainBundle.crt   >>  중개 인증서
 File__(도메인).crt           >>  SSL 인증서


🌵 2. 서버에 인증서 업로드

❗ 서버환경에 따라 디렉토리 구성은 다르니 참고만

Apache2 서버에서 SSL 인증을 하기 위해서는 openssl 이 필요하다.
아파치 서버에 기본으로 설치되어 있다는데 혹시 모르니 설치확인 한 후 진행.

  • 개인키/인증서 파일 확인

개인키와 인증서 파일이 일치 하는지 확인해야하는데
이때 인증서 파일들이 /root 디렉토리에 위치해야한다. 아래 명령어를 입력해서 확인해보자.
명령어 입력 후 (stdin) = 숫자 어쩌구 영어 저쩌구 가 서로 동일하면 일치하는 파일이라는 뜻.

openssl rsa -in (개인키파일명) -modulus -noout | openssl md5
openssl x509 -in (SSL인증서파일명) -modulus -noout | openssl md5
  • /etc/apach2/ssl 디렉토리 생성

/etc/apach2 폴더 안에 인증서들을 보관할 ssl 폴더를 만든 후 개인키, 인증서 파일들 모두를 복사해 넣어놨다.
보안 강화를 위해 추가로 아래 명령어들을 입력해 권한설정을 해주었다.

	chown -R root:root /etc/apache2/ssl  // 소유자 설정
    chmod 600 /etc/apache2/ssl/*.*       // 폴더 안에 있는 파일들에 대한 읽기쓰기 권한
    chmod 700 /etc/apache2/ssl           // ssl 폴더의 읽기,쓰기,실행 권한


🌵 3. conf 파일 설정

내 서버의 apache2 폴더 안 구성은 아래 이미지와 같다.

  • /etc/apache2/sites-available

	default-ssl.conf     >> https 로 접속했을 때
	default.conf         >> http 로 접속했을 때

default-ssl.conf 를 복사해서 수정해서 사용하면 된다.
복사한 파일의 이름은 편의상 '도메인-ssl.conf' 로 지정했다.
(httpd-ssl.conf 일 수도 있다.)

  • ssl.conf

	<VirtualHost _default_:443>
    	ServerName 도메인.com
		ServerAlias www.도메인.com
		ServerAdmin webmaster@localhost
		

		DocumentRoot /home/public_html
        이 아래로 어쩌구 내용이 많은데 딱 세가지만 확실하게 수정하면 된다.
        
        SSLEngine on 
        SSLCertificateFile	/etc/apache2/ssl/인증서파일
		SSLCertificateKeyFile  /etc/apache2/ssl/개인키파일 
        
        위 세가지는 기본으로 주석이 해제 되어있어서 인증서 파일이 있는 경로로만
        수정해주면 되는데 아래에 보면 중개사 인증서를 넣는 곳은 주석처리가 되어있다.
        
        SSLCertificateChainFile /etc/apache2/ssl/중개사 인증서 파일 
        (얘는 안 넣어도 되는거 같은디..걍 넣어줘봤음)
	</VirtualHost>	

저장하고 apache2 서버를 재시작 한 후 https://도메인.com 으로 접속해보자.
접속이 된다면 인증이 된거다!!
다 하고 보니 이렇게 간단한건데 나는 왜 그렇게 고생을 했던걸까...
알 수 없다 지난 이틀이 생각이 나지 않는다.
가비아에 있는 가이드만을 참고 하기엔 서버환경이나..파일명들이 달라 좀 헤맸던 것 같다.



🌵 4. https로 리다이렉트

SSL 인증이 완료되어 https로 접속이 되는 것 까지 확인이 되었다면
이제 내 사이트에 접속했을 때 알아서 https로 접속이 되도록 설정해주어야 한다.

  • sites-enabled/conf

	<VirtualHost *:80>
    
		RewriteEngine On
    	RewriteCond %{HTTPS} off
    	RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    
    </VirtualHost>

위 세줄만 파일안에 추가해주면 된다.
여기서 주의할 점은 ssl.conf가 있었던 sites-available 이 아닌
sites-enabled 폴더 안에 있는 conf 파일에 추가해야 된다는 것.

왜...인지는 모르겠다...남이 구축한 서버에 유지보수하는 신입개발자라..나는 모른다...

무튼 이것으로 ssl 인증이 끝났다.
이제 내 사이트에 접속하면 도메인 옆에 느낌표가 아닌 자물쇠가 표시된다.
든든하다...

profile
어떻게든 되겠지!

0개의 댓글