한국 도메인에 SSL/TLS 인증서 적용하기: Certbot을 활용한 발급과 자동 갱신 방법

June·2024년 11월 6일
0
post-thumbnail

안녕하세요, 오늘은 구어체로 한국 도메인을 통해 도메인 등록을 진행해보겠습니다.

아래의 사이트에 들어가셔서 회원가입부터 진행해주시면 됩니다!

(개인 정보를 요구하진 않지만 사이트 자체가 허술하게 생겨서 개인정보 다 털릴거 같이 생겼어요!)
내도메인.한국 - 한글 무료 도메인 등록센터

회원가입을 진행해주시면 위와 같은 창이 뜹니다.

위의 한글 도메인을 검색하시면 정말 한글 도메인이 나옵니다.

저희는 아래의 일반 도메인을 이용하겠습니다.
matis 라는 도메인을 이용해보겠습니다. 아래의 matis.kro.kr 등록하기 버튼을 눌러주세요.

등록하시면 다음과 같이 보안코드를 입력하라고 하는데 원하는대로 눌러줍니다.

저는 AWS EC2를 사용중에 있으며, 탄력적 IP를 할당해서 항상 고정된 IP가 존재합니다. 따라서, 해당 IP를 matis.kro.kr 과 연결하기 위해 아래와 같이 설정합니다. (IP는 임의로 넣은 것입니다.)

다른 고급 설정들에 대해 (GPT가) 설명을 드리자면,

  • IP주소(A 레코드):
    • 도메인을 특정 IP 주소로 연결합니다. 예를 들어, matis.kro.kr 도메인을 127.00.135.36 IP 주소로 연결하려면 이 항목에 해당 IP 주소를 입력합니다.
    • 웹 서버의 IP 주소로 설정하여 도메인이 해당 서버로 접속될 수 있도록 합니다.
  • IPv6주소(AAAA 레코드):
    • 도메인을 IPv6 주소로 연결합니다. IPv6는 IPv4보다 더 많은 IP 주소를 제공하는 프로토콜입니다.
    • IPv6 주소를 입력해 해당 도메인에 대해 IPv6 기반 연결을 허용할 수 있습니다.
  • 별칭(CNAME 레코드):
    • 도메인에 대한 별칭을 설정하는 레코드입니다.
    • 예를 들어, www.matis.kro.krmatis.kro.kr로 설정하여 두 주소가 동일한 서버를 가리키도록 할 수 있습니다.
    • 서브도메인이나 다른 도메인을 가리킬 때 주로 사용됩니다.
  • 메일(MX 레코드):
    • 도메인의 메일 서버를 설정하는 레코드입니다.
    • 예를 들어, mx1.domain.com과 같은 메일 서버 주소를 입력하여 matis.kro.kr 도메인으로 수신된 이메일이 해당 메일 서버로 전달되도록 설정합니다.
    • prio 필드를 통해 메일 서버의 우선순위를 설정할 수 있습니다. 낮은 숫자가 높은 우선순위를 의미합니다.
  • TXT(SPF) 레코드:
    • 도메인에 대한 텍스트 정보를 제공하는 레코드로, 주로 인증 정보나 도메인 설명을 입력하는 데 사용됩니다.
    • 예시로 보여진 값 v=spf1 ip4:127.0.0.1 ~all은 SPF(Sender Policy Framework) 설정입니다. 이 설정은 이메일 발송 시 허용된 IP 주소 목록을 지정하여 스팸 방지에 도움을 줍니다.

그렇다고 하네요..😊

이제 ec2 내에서 CertBot을 설정해볼게요.

ec2에 접속을 해줍니다.

아래의 명령어를 입력해서 Certbot을 설치합니다.

sudo apt update
sudo apt install certbot python3-certbot-nginx

이메일과 동의를 얻는데 사용자가 원하시는대로 해주시면 됩니다. (단, 동의는 해주세요)

이제 SSL 인증서 발급을 진행하겠습니다.

아래와 같이 입력할 경우 yourdomain.comwww.yourdomain.com 2가지에 대해 인증서 발급을 진행해줍니다. 위의 한국 도메인에서 www를 입력하지 않았기 때문에 matis.kro.kr 만 입력해 줍니다.

#sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

위의 한국 도메인에서 www를 입력하지 않았기 때문에 matis.kro.kr 만 입력해 줍니다.

sudo certbot --nginx -d matis.kro.kr

이제 아래의 내용을 포함한 성공을 했다는 글자가 뜨는데요 아래의 .pem 으로 끝나는 경로를 기억합니다.

Certificate is saved at: **/etc/letsencrypt/live/yourdomain.com/fullchain.pem**
Key is saved at:         **/etc/letsencrypt/live/yourdomain.com/privkey.pem**
This certificate expires on 2025-02-04.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

이제 nginx에 설정을 진행해보도록 하겠습니다,

nginx 설정 파일에 들어가줍니다. 저의 경우에는 그냥 그때마다 설정한 곳에 했어요 (경로가 매번 다름)

cd /etc/nginx/sites-enabled
sudo vim default

이제 위에서 pem 키 받은 것들을 작성해줍니다.

server {
    listen 80;
    server_name matis.kro.kr;

    # HTTP에서 HTTPS로 리다이렉트
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;  # HTTPS 설정
    server_name matis.kro.kr;

    # SSL 인증서 설정 (Certbot에 의해 관리)
    ssl_certificate /etc/letsencrypt/live/matis.kro.kr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/matis.kro.kr/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;  # Certbot에서 관리
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;   # Certbot에서 관리

    # React 애플리케이션을 서빙
    location / {
        root /home/build;
        index index.html index.htm;
        try_files $uri /index.html;  # React 라우팅 처리
    }
    
    ...
}

이제 아래의 명령어를 입력해서 nginx를 재시작하면,

sudo systemctl restart nginx

짠, 무언가가 완성..?
(이후 에러 나오는 문제는 본인의 책임.....)

profile
😊

0개의 댓글