사전 준비물

🐐 도메인

가비아 도메인 구매

가비아에서 도메인을 구매한다.
https://www.gabia.com/

저렴한 도메인도 많다 500원 ~ 22000원 혹은 그 이상

도메인 구매후 1시간이내에 도메인이 등록된다.

이젠 도메인이 등록되었으니, 도메인을 설정해보자.

가비아 도메인 설정

가비아에서 도메인을 구매하면, 기본적으로 가비아의 네임서버가 설정되어있다.

본인의 서버로 도메인을 연결하기 위해서는, 네임서버를 변경해야한다.

가비아에서 도메인을 구매한 후, 네임서버를 변경한다.

🤷🏻‍♀️ Certbot 설치

🐐 Certbot 설치

2023-05-31 기준 certbot 설치 방법은 다음과 같다.

Windows(beta)

certbot
문서 : https://certbot.eff.org/instructions?ws=other&os=windows
설치파일 : https://github.com/certbot/certbot/releases/latest/download/certbot-beta-installer-win_amd64_signed.exe

Linux

ubuntu 20.04 기준

certbot
설치 : https://certbot.eff.org/instructions?ws=webproduct&os=ubuntufocal

# certbot 설치
sudo apt-get install certbot

# certbot 실행
sudo certbot certonly --standalone -d {도메인}

🐐 인증서 생성

인증서 생성

# certbot 실행
sudo certbot certonly --manual --preferred-challenges dns --email ${이메일 입력하세요} --domain ${도메인주소를 입력하세요}

# powershell
certbot certonly --manual --preferred-challenges dns --email ${이메일 입력하세요} --domain ${도메인주소를 입력하세요}

다음 문구가 나온다.
나는 윈도우에서 진행했다.

Saving debug log to C:\Certbot\log\letsencrypt.log
Requesting a certificate for ${입력한 도메인주소}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:

_acme-challenge.${입력한 도메인주소}.

with the following value:

EVOoQNtSAcYYAgJl0nlLyIj-r-1oh08QuFtxtKv_LS8

Before continuing, verify the TXT record has been deployed. Depending on the DNS
provider, this may take some time, from a few seconds to multiple minutes. You can
check if it has finished deploying with aid of online tools, such as the Google
Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.${입력한 도메인주소}.
Look for one or more bolded line(s) below the line ';ANSWER'. It should show the
value(s) you've just added.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

이런 문구가 나오면서 TXT 레코드를 생성하라고 한다.

TXT 레코드 등록(가비아 기준)

가비아에서 TXT 레코드를 등록하는 방법은 다음과 같다.

  1. 가비아에 로그인한다.
  2. 도메인 관리 -> 도메인 관리 -> 도메인 -> 도메인 이름 -> DNS 레코드 관리 -> TXT -> 레코드 추가
  3. 레코드 이름_acme-challenge를 입력한다.
  4. 레코드 값EVOoQNtSAcYYAgJl0nlLyIj-r-1oh08QuFtxtKv_LS8를 입력한다.
  5. 저장 버튼을 누른다.
  6. TXT 레코드가 생성되었는지 확인한다.

저장 후 ENTER 키를 입력할경우 다음과 같은 문구가 나온다.

Successfully received certificate.
Certificate is saved at: C:\Certbot\live\amsomad.site\fullchain.pem
Key is saved at:         C:\Certbot\live\amsomad.site\privkey.pem
This certificate expires on 2023-08-29.
These files will be updated when the certificate renews.

NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

인증서 생성 확인

# 인증서 확인
sudo certbot certificates

다음과 같은 문구가 나온다.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: ${입력한 도메인주소}
    Serial Number: ${시리얼 넘버가 쓰여있습니다.}
    Key Type: ECDSA
    Domains: ${입력한 도메인주소}
    Expiry Date: 2023-08-29 05:21:24+00:00 (VALID: 89 days)
    Certificate Path: C:\Certbot\live\${입력한 도메인주소}\fullchain.pem
    Private Key Path: C:\Certbot\live\${입력한 도메인주소}\privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ASP.NET Core

🐐 인증서 적용

인증서 적용

// Program.cs

builder.Services.Configure<KestrelServerOptions>(options =>
{
    var certificatePath = "${인증서 경로}";
    var privateKeyPath = "${개인키 경로}";
    var certificate = new X509Certificate2(certificatePath, privateKeyPath);

    options.ConfigureHttpsDefaults(options =>
        options.ServerCertificate = certificate);

});

// appsettigns.json
  
  "CertificateSettings": {
    "CertPath": "${인증서 경로}",
    "KeyPath": "${개인키 경로}"
  },
  //grpc server
  "Kestrel": {
    "Endpoints": {
      "Https": {
        "Url": "https://${ip : Port}",
        "Certificate": {
          "Path": "CertificateSettings:CertPath",
          "KeyPath": "CertificateSettings:KeyPath"
        }
      }
    }
  }

인증서 적용 확인

# certbot 인증서 적용 확인
sudo certbot certificates

# windows certbot 인증서 적용 확인
certbot certificates

# Dotnet 개발자 인증서 적용 확인
dotnet dev-certs https --check

확인결과 다음과 같은 문구가 나온다.

# certbot 인증서 적용 확인
# **관리자권한 필수

C:${경로}\etc\ssl\certs>certbot certificates

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: ${입력한 도메인주소}
    Serial Number: ${시리얼 넘버가 쓰여있습니다.}
    Key Type: ECDSA
    Domains: ${입력한 도메인주소}
    Expiry Date: 2023-08-29 05:21:24+00:00 (VALID: 82 days)
    Certificate Path: ${저장한 경로}\fullchain.pem
    Private Key Path: ${저장한 경로}\privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Note: 만들고나니 내것이 아니었다.

Leave a comment