서버내 Certbot으로 SSL 인증서 발급 및 적용 하는 방법

 안녕하세요.

JP-HOSTING 입니다.

도메인(웹서버) 운영 시 보안을 위해 https 설정을 하시는 분들이 많으신데요

HTTPS란?

  • HTTPS는 웹 보안의 기본: HTTPS(SSL/TLS)는 웹사이트와 사용자 간 데이터를 암호화하여 해커의 중간자 공격을 방지합니다.
  • SSL 인증서 필수: HTTPS 구현을 위해 신뢰할 수 있는 인증 기관에서 발급된 SSL 인증서가 필요하며, 최신 TLS 프로토콜 사용이 권장됩니다.
  • SEO 및 신뢰도 향상: HTTPS는 구글 검색 순위에 긍정적 영향을 미치며, 사용자의 신뢰도를 높여 웹사이트 방문과 거래 안전성을 증대시킵니다.

  • 저희 프록시를 통하여 인증 및 설정도 가능하지만

    인증서에 도메인 개별 정보를 띄우는 방법도 따로 있기에

    서버내에서 SSL 인증서 발급 및 적용 하는 방법을 기술 해 보겠습니다.

    1. 도메인 준비




    테스트에 사용할 도메인을 준비하였습니다.


    2. Python 설치

    https://www.python.org/downloads/


    Certbot을 설치하기 위해 설치해 줍니다.


    3. CMD 창을 열어 잘 설치가 되었는지 확인해 줍니다.


    3-2. 확인에 에러가 확인 될 경우

    Python 환경 변수 수동 설정

    1.1 환경 변수 편집 열기

    1. Windows 검색에서 "환경 변수 편집"을 검색하여 실행합니다.
    2. 시스템 속성 창에서 환경 변수(N) 버튼을 클릭합니다.

    2.2 Path 변수 편집

    1. 시스템 변수 섹션에서 Path를 찾아 선택한 뒤 편집(E) 버튼을 클릭합니다.

    2. 새로 만들기(N) 버튼을 클릭하고, Python의 설치 경로를 추가합니다:

      • 예: C:\Users\Administrator\AppData\Local\Programs\Python\Python313
      • 추가로, Python의 Scripts 경로도 넣어야 합니다:
        • 예: C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Scripts
    3. 모든 창에서 확인을 클릭하여 변경 사항을 저장합니다.


    4. Certbot 설치

    설치

    pip install certbot

    확인

    certbot --version
    CMD 창에 위 명령어를 입력하여 확인 해 줍니다


    5. 인증서 발급

    certbot certonly --standalone -d yourdomain.com

    -d 뒷쪽에 도메인 명을 입력하면 되며 도메인이 여러개일 경우 ,(쉼표)를 사용합니다.

    여러개일 경우 예시
    certbot certonly --standalone -d yourdomain.com,www.yourdomain.com

    인증서의 저장 경로 예시

    C:\Certbot\live\yourdomain.com\


    6. 인증서 변환(PFX 파일로 변환)

    https://slproweb.com/products/Win32OpenSSL.html

    작업을 위해 OpenSSL을 설치해 줍니다.

    - Certbot은 .pem 파일을 생성하지만, IIS는 .pfx 형식을 요구합니다. 이를 변환하려면 OpenSSL을 사용합니다.

    OpenSSL 설치 경로 확인

    먼저 OpenSSL이 설치된 정확한 경로를 다시 확인해 주세요. 설치된 경로는 bin 폴더 안에 openssl.exe가 있어야 합니다.

    예를 들어, OpenSSL이 C:\Program Files\OpenSSL에 설치되었다면, 그 안에 bin 폴더가 있어야 합니다.

    매개변수 경로를 제대로 확인하여 새로 만들기 하여 추가해줍니다.

    정상 설치 완료 된 모습.

    이후 CMD에서

    openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in fullchain.pem

    명령을 해줍니다

    혹은(예시이기에 경로는 본인에게 맞추어 주어야 합니다.)
    openssl pkcs12 -export -out C:\Certbot\live\yourdomain.com\yourdomain.com.pfx -inkey C:\Certbot\live\yourdomain.com\privkey.pem -in C:\Certbot\live\yourdomain.com\fullchain.pem
    해당 명령은 이메일 등록 등의 과정을 패스합니다.
    이후
    암호 설정이 필요 없을 경우 엔터키를 입력하여 패스 할 수 있습니다.


    6-2. certificate.pfx: 변환된 인증서 파일 이름입니다.
    변환 중 비밀번호를 요청하면, 적당한 비밀번호를 설정하세요.
    3.2 IIS에서 인증서 추가
    IIS 관리자 실행

    6-3. Windows 검색에서 "IIS Manager"를 실행합니다.
    서버 인증서 추가

    6-4. 왼쪽 패널에서 서버 이름을 선택합니다.
    가운데 패널에서 Server Certificates를 더블 클릭합니다.
    오른쪽 메뉴에서 Import를 선택하고 .pfx 파일을 불러옵니다.
    비밀번호를 입력하고 완료합니다.
    HTTPS 바인딩 설정

    6-5. 사이트 이름을 선택하고 오른쪽 메뉴에서 Bindings를 클릭합니다.
    Add를 클릭하고:
    Type: https
    SSL Certificate: 방금 추가한 인증서 선택
    저장 후 확인합니다.


    7. 인증서 변환(PFX 파일로 변환) 2 - 문제 점 해결 방법

    이메일 주소를 입력 시 예시

    Enter email address (used for urgent renewal and security notices): [email protected]


    이메일 주소를 생략 시 예시

    certbot certonly --standalone -d yourdomain.com --register-unsafely-without-email


    문제가 지속 될 경우 디버깅
    certbot certonly --standalone -d yourdomain.com -v

    + CMD를 껐다가 관리자 권한 실행

    + 80포트 점유중인 설정 중지 후 재시도

    어떤게 80포트를 점유 중인지 확인

    tasklist | findstr 1234

    PID 4번이 점유 중일 경우 (어떤 프로세스인지 확인 가능)

    tasklist | findstr 4


    HTTP.sys 서비스를 중지

    net stop http

    HTTP.sys를 다시 활성화

    net start http

    IIS를 중지(완전 중지)

    iisreset /stop

    IIS를 중지(w3svc만 중지)

    net stop w3svc  

    IIS 재시작

    iisreset /start

    IIS 재시작(w3svc만 재시작)

    net start w3svc


    + Certbot 실행 재시도

    certbot certonly --standalone -d gyunew.site --register-unsafely-without-email


    + 80포트 중지(해지)가 어려울 경우

    certbot certonly --manual --preferred-challenges dns -d yourdomain.com

    해당 명령어 실행시 보이는 TXT 값을 DNS에 추가 해 줍니다

    저희 JP-HOSTING를 통하여 DNS 관리하시는 고객분들은
    TXT 값을 알려주시면 등록을 도와드리겠습니다.


    8. 인증서 등록



    OpenSSL을 통하여 .pfx 형식으로 만들어진 인증서를 IIS에서 등록해 줍니다.

    마지막 사진은 정상등록 된 모습입니다.


    이상으로

    서버내에서 Certbot으로 SSL 인증서 발급 및 적용 하는 방법이었습니다.

    JP-HOSTING 였습니다.

    감사합니다.












    Powered by Blogger.