본문 바로가기

프로젝트 설정/서버

[SERVER] Let's Encrypt 서브도메인 인증서 발행하기 (feat. webroot / ubuntu / nginx)

반응형

인증 방식 종류

인증하는 방식은 3가지가 있다.

1. standalone 방식

letsencrypt 가 별도의 웹서버를 띄워 인증하는 방식.  기존 서버를 중지하고 해야 하기 때문에 비효율적임.

와일드카드를 사용할 수 없음

 

2. webroot 방식

실제 서비스 되고 있는 사이트의 디렉토리내에 특정파일로 검증하는 방식

모든 서브도메인이 하나의 디렉토리를 이용하고 있어야만 함

와일드카드 사용할 수 없음

 

3. DNS 방식

DNS 레코드에 TXT 타입의 값을 입력하여 해당 도메인의 소유자를 확인하여 인증서를 발급해주는 방식

와일드카드를 사용할 수 있다

 

 

내꺼고 내가 인증 받을 수 있다면 나는 webroot 방식이 제일 쉽게 간편한것 같다.

그래서 webroot 방식으로 진행하였다.

 

참고로 ubuntu, nginx 를 사용중이다.

 

1. certbot install

sudo apt-get update
sudo apt-get install certbot

2. nginx modify (letsencrypt add)

80 server쪽에 아래 코드 추가

server {
    listen       80;
    server_name  test.myurl.com;
    ...

#    ssl webroot방식 인증용
    location /.well-known/acme-challenge/ 
        default_type "text/plain";
        root /var/www/letsencrypt;
    }

}

3. 인증서 발급

나는 서브도메인인 test.mydomain.com 에 하려고 한거지만

본 도메인인인 mydomain.com으로 할땐 그냥 mydomain.com 으로 하면 된다.

  • /var/www/mydomain: 웹 서버의 루트 디렉토리
  • sub.mydomain.com : 인증서를 발급하려는 도메인
# sudo certbot certonly --webroot -w /var/www/mydomain -d sub.mydomain.com
sudo certbot certonly --webroot -w /var/www/mydomain.com -d test.domain.com

4. nginx modify (ssl 인증서 add)

내 도메인에 개인키를 등록하는 작업이다.

certbot을 이용하면 자동으로 해주기도 하지만 안되었을 경우 수동으로 추가해준다.

server {
    listen 443 ssl;
    server_name test.mydomain.com;
	# 키 등록
    ssl_certificate /etc/letsencrypt/live/test.mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/test.mydomain.com/privkey.pem;

    # 나머지 설정    
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 
}

보안 강화

include /etc/letsencrypt/options-ssl-nginx.conf;:

Let's Encrypt가 제공하는 기본 SSL 설정을 포함하는 라인입니다. 이 파일은 일반적으로 안전한 SSL 설정과 관련된 다양한 옵션을 포함하며, 이를 직접 입력하지 않고 포함시키기 위해 사용됩니다. 이를 통해 SSL/TLS 프로토콜의 안전한 버전, 안전한 암호화 스위트 등을 설정할 수 있습니다.

ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;:

Diffie-Hellman(DH) 그룹을 지정하는 데 사용됩니다. DH는 키 교환 알고리즘 중 하나로, 통신 세션마다 고유한 공유 비밀을 생성합니다. 이를 통해 Forward Secrecy를 구현할 수 있는데, 만약 개별 세션의 키가 노출되더라도 다른 세션의 키는 안전하게 유지됩니다.

/etc/letsencrypt/ssl-dhparams.pem 파일은 DH 파라미터를 포함하며, 이 파일을 생성하려면 다음 명령을 실행할 수 있습니다.

sudo openssl dhparam -out /etc/letsencrypt/ssl-dhparams.pem 2048

DH 파라미터의 크기는 보안 수준에 따라 선택됩니다. 2048 비트는 현재 일반적으로 안전한 크기로 간주됩니다.
이 두 설정은 모두 웹 서버의 SSL/TLS 보안을 강화하는 데 기여합니다. Let's Encrypt와 함께 사용할 때 Certbot이 자동으로 이러한 설정을 추가하기도 합니다.

5. nginx restart

sudo nginx -t

sudo systemctl restart nginx
# or 
sudo service nginx restart

6. 접속확인

접속 잘 되는지, 인증서 잘 입력됬는지 확인한다.

 

참고

https://hacktam.kr/etclec/180?sca=Server

 

메인페이지 | 핵탐

메인페이지,핵탐,메인페이지

hacktam.kr

반응형