[Web] - SSL 인증서 적용하기

오동훈·2023년 1월 28일
5

AWS Cloud

목록 보기
6/8

1. SSL이란

우선 SSL이란 서버와 사용자(브라우저) 간의 통신을 할 경우 정보를 암호화하고 도중에 해킹을 통해 정보가 유출이 된다고 하더라도 정보의 내용을 보호할 수 있는 보안 인증 솔루션 기술이라고 생각하면 됩니다.

보안 인증서가 적용되지 않은 일반 HTTP(80) 접속 했을 시에 각 브라우저 반응은 아래 사진과 같습니다.

1. 인증서 종류

저는 도메인이 하나이기 떄문에 단일 인증서를 사용해 등록해보려고 합니다.

종류영문 표기사용 용도도메인(CN) 표시 예
단일 인증서Single-Domain SSL하나의 도메인에만 적용 가능CN=foxydog.co.kr or www.foxydog.co.kr
와일드카드 인증서WildCard SSL하나의 인증서로 서브 도메인 무제한
SSL적용 가능, 여러개의 서브도메인을 서버를 나눠서 운영해도 무제한 적용 가능
CN=*.foxydog.co.kr
www.foxydog.co.kr
mail.foxydog.co.kr
m.foxydog.co.kr...
※ 형태로 뒤에 .도메인만 같다면 앞 서브도메인은 무제한 이용 가능
멀티도메인 인증서Multi-Domain SSL하나의 인증서로 여러 도메인 등록가능
단, 무제한은 아니며 대체로 99개까지 등록 가능
CN=foxydog.co.kr
CN=testfoxy.co.kr
CN=foxytest.com...
※ 전혀 다른 도메인으로 등록 가능

2. 그럼 적용해보자~!!

1. SSL 사용할 도메인 입력

우리는 또 돈이 없응께 무료인 곳을 찾아 다녀야지요~

zerossl 요기~ 이름부터가 zero로 시작하는게 마음에 든다!

해당 홈페이지 들어가면 보이는 메인 화면인데, 지금 이 과정을 보고 있다면 도메인 주소는 있다고 생각하고 얘기하겠습니다~!!

아래 빨간색 부분에 가지고 있는 도메인 주소를 입력해주면 됩니다.

2. SSL 인증서 설정

1. 도메인

그러면 해당 도메인에 대해 SSL 발급 가능한지 여부 확인 가능하고, 가능하다면 다음 단계를 눌러줍니다.

2. 타당성

90일로 해야 돈 내지 않습니다! 90일로 체킹하고 다음 단계를 눌러줍니다.

3. CSR 및 연락처

이건 자동 생성으로 해놓고 빠르게 다음 단계~

4. 주문 완료

그럼 우리는 우선 무료로 SSL 인증서 발급이 가능하다고 나오는데 호딱 다음 단계로 넘어가줍니다~!!

3. 도메인 확인 DNS(CNAME)

도메인 확인 부분에는 총 3가지 방법이 존재합니다.

  1. 이메일 확인 인증 - 제일 심플한 방법이지만 해당 방법으로 하지 못하는 경우가 많습니다. 이메일 주소를 직접 입력하는게 아니라 도메인을 구입했을 때 개인(법인) 소유자가 등록한 이메일 주소가 자동으로 뜨며 그 중 맞는 것을 선택해 사용하면 됩니다. 하지만 저는 해당하는 이메일이 없어 인증할 수가 없었습니다ㅠㅠ
  2. DNS (CNAME) 인증 - DNS의 경우 도메인 네임서버에 직접 CNAME을 등록해 인증하는 방식을 의미합니다. 저는 해당 방법으로 인증했습니다.
  3. HTTP File Upload 인증 - 서버 내 해당 파일을 넣어두고 직접 인증하는 방법입니다.

1. 도메인 정보 확인

저는 2번으로 진행하였으니 2번에 대해 설명하겠습니다. 우선 도메인 확인 부분에서 보이는 화면입니다. 위에서 얘기했다시피 네임서버에 직접 CNAME을 등록해 인증해야합니다.

2. 네임서버 등록

저는 freenom에서 구입했기 때문에 해당 사이트로 진입하겠습니다.

해당 부분에 진입했다면 4가지를 설정해주어야 합니다. 저는 이전에 SSL 인증서 등록 절차를 위해 한 번 해봐 값이 다른점 양해부탁드림당~

  1. Name - 위의 이름 부분 ex)_C480927... 값 입력
  2. Type - CNAME 입력
  3. TTL - 전파시간으로 3600(이하)으로만 설정하면 상관없습니다.
  4. Targer - ex) 2A2167... 값 입력

3. 도메인 인증

DNS 등록이 완료되었다면 5~10분 정도 내에 완료될텐데, 그러면 다시 돌아와 [Next Step] ▷ 다음 단계에서 바로 [Verify Domain] 인증합니다.
해당 사진은 인증서 하나 더 등록할거면 돈내라 해서 외부에서 퍼왔습니다ㅎㅎ,,

4. HTTP File Upload

해당 방법은 인증 기관에서 경로코드를 보내주면 해당 정보를 보여주게 서버에서 설정해주면 됩니다.

[도메인]/.well-known/pki-validation/[파일 경로].txt

1. nginx 설정

nginx 내 conf.d나 sites-availabe 내 설정한 파일 내 다음과 같이 설정해주면 됩니다.

server {
	listen 80;
    server_name {{도메인 이름}};
    
    location /.well-known/pki-validation/ {
        root /var/tmp/;
        add_header Content-Type "text/plain";
    }
}

2. 해당 경로로 파일 업데이트

위의 location 부분에 설정한 경로에 기관에서 전달받은 파일명은 경로.txt로 내용은 보내준 코드로 명시해 주면 됩니다.

vi /var/tmp/.well-known/pki-validation/[경로].txt

[보내준 코드]

3. 확인

해당 엔드포인트로 접속 시 내용이 정상 확인되면 끝입니당~

5. 인증서 설치

1. 서버 선택 후 인증서 다운

나는 Nginx 사용하고 있으니깐 여러가지 옵션 중 Nginx 선택 >> 인증서 다운로드 해주면 됩니다.

2. 인증서 설치

인증서를 다운 받으면 certificate.crt, ca_bundle.crt, private.key 이렇게 총 3개가 존재하고, 이제 아래 작업들을 차례대로 해야합니다.

  1. 인증서 서버로 업로드
  2. .crt 파일 병합
  3. 가상 호스트 파일 편집(Nginx)
  4. 서버 재실행

1. FTP를 통해 서버에 인증서를 /etc/ssl/<추가 디렉터리>/ 경로에 업로드

가장 먼저 위의 인증서 파일(certificate.crt, ca_bundle.crt 및 private.key)을 선택한 디렉토리의 NGINX 서버에 업로드해야 합니다.
저는 /etc/ssl/oddong.tk/ 경로에 업로드 해주었습니당

2. .crt 파일 병합

NGINX는 SSL 설치를 허용하기 위해 모든 .crt 파일을 병합해야 합니다. certificate.crt 및 ca_bundle.crt 파일을 병합하려면 다음 명령을 실행해야 합니다.

# .crt 파일 병합

cat certificate.crt ca_bundle.crt >> certificate.crt

3. 가상 호스트 파일 편집(Nginx)

HTTP는 80으로 접속하지만, HTTPS는 443 포트로 접속하게 됩니다. 가운데 표시 위쪽을 추가해주면 됩니다.

server {

    listen               443 ssl;
    
    
    ssl                  on;
    ssl_certificate      /etc/ssl/<추가 디렉터리>/certificate.crt; 
    ssl_certificate_key  /etc/ssl/<추가 디렉터리>/private.key;
    
    =================== ↑↑↑ 추가 ↑↑↑ ===================
    
    server_name  your.domain.com;
    access_log   /var/log/nginx/nginx.vhost.access.log;
    error_log    /var/log/nginx/nginx.vhost.error.log;
    location     / {
    root         /home/www/public_html/your.domain.com/public/;
    index        index.html;
    }

}

4. 서버 다시 시작

마지막으로 변경 사항을 적용하려면 NGINX 서버를 다시 시작해야 합니다. 아래 명령을 실행하여 NGINX 서버를 다시 시작할 수 있습니다.

systemctl restart nginx

5. 끝!

절차는 끝났고 성공적으로 연결된 것을 볼 수 있다~~~ 나이쏴~

profile
삽질의 기록들🐥

0개의 댓글