웹사이트 검색

acme.sh 시작하기 Lets Encrypt SSL 클라이언트


이 페이지에서

  1. Lets Encrypt란?
  2. Acme.sh 사용법 및 기본 명령
    1. Acme.sh 설치
    2. SSL 인증서 발급
    3. 자동 DNS API 통합\n
    4. 설치 Lets encrypt SSL 인증서
    5. Lets Encrypt SSL 인증서 갱신
    6. acme.sh 업그레이드 방법

    Acme.sh는 bash, dash 및 sh 셸과 호환되는 Shell(Unix 셸) 언어로만 작성된 간단하고 강력하며 사용하기 쉬운 ACME 프로토콜 클라이언트입니다. SSL 인증서의 설치, 갱신, 취소를 관리하는 데 도움이 됩니다. ACME 버전 1 및 ACME 버전 2 프로토콜과 ACME v2 와일드카드 인증서를 지원합니다. 의존성이 없는 ACME 클라이언트는 더욱 좋습니다. 실행하기 위해 전체 인터넷을 다운로드하고 설치할 필요가 없습니다. 이 도구에는 루트 또는 sudo 액세스가 필요하지 않지만 루트를 사용하는 것이 좋습니다.

    Acme.sh는 도메인 소유권을 확인하는 데 사용할 수 있는 다음 확인 방법을 지원합니다.

    • 웹루트 모드
    • 독립형 모드\n
    • 독립형 tls-alpn 모드\n
    • 아파치 모드
    • Nginx 모드
    • DNS 모드
    • DNS 별칭 모드
    • 상태 비저장 모드

    Lets Encrypt란?

    Let's Encrypt(LE)는 전체 웹 암호화를 목표로 무료 자동 SSL/TLS 인증서를 제공하는 인증 기관(CA)입니다. 도메인 이름을 소유하고 있고 서버에 대한 셸 액세스 권한이 있는 경우 Lets Encrypt를 활용하여 무료로 신뢰할 수 있는 인증서를 얻을 수 있습니다. Lets Encrypt는 최대 100개의 호스트 이름과 와일드카드 인증서에 대해 SAN 인증서를 발급할 수 있습니다. 모든 인증서는 90일 동안 유효합니다.

    Acme.sh 사용법 및 기본 명령

    이 섹션에서는 가장 일반적인 acme.sh 명령 및 옵션 중 일부를 보여드리겠습니다.

    Acme.sh 설치

    acme.sh를 설치하는 몇 가지 옵션이 있습니다.

    curl 또는 wget을 통해 웹에서 설치:

    curl https://get.acme.sh | sh
    source ~/.bashrc

    또는

    wget -O - https://get.acme.sh | sh
    source ~/.bashrc

    GitHub에서 설치:

    curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

    또는

    wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

    Git 복제 및 설치:

    git clone https://github.com/Neilpang/acme.sh.git
    cd ./acme.sh
    ./acme.sh --install
    source ~/.bashrc

    설치 프로그램은 3가지 작업을 수행합니다.

    1. acme.sh를 생성하고 홈 디렉토리($HOME)에 복사: ~/.acme.sh/. 모든 인증서도 이 폴더에 저장됩니다.
    2. 별칭 만들기: acme.sh=~/.acme.sh/acme.sh.
    3. 매일 cron 작업을 생성하여 필요한 경우 인증서를 확인하고 갱신합니다.\n

    고급 설치:

    git clone https://github.com/Neilpang/acme.sh.git
    cd acme.sh
    ./acme.sh --install \
    --home ~/myacme \
    --config-home ~/myacme/data \
    --cert-home ~/mycerts \
    --accountemail "" \
    --accountkey ~/myaccount.key \
    --accountconf ~/myaccount.conf \
    --useragent "this is my client."

    모든 옵션을 설정할 필요는 없으며 원하는 항목만 설정하면 됩니다.

    옵션 설명:

    • --homeacme.sh를 설치할 사용자 정의된 디렉토리입니다. 기본적으로 ~/.acme.sh에 설치됩니다.
    • --config-home은 쓰기 가능한 폴더이며, acme.sh는 거기에 모든 파일(cert/keys, configs 포함)을 씁니다. 기본적으로 --home.에 있습니다.
    • --cert-home은 발급한 인증서를 저장하기 위한 사용자 지정 디렉터리입니다. 기본적으로 --config-home에 저장됩니다.
    • --accountemail은 Lets Encrypt에 계정을 등록하는 데 사용되는 이메일이며 여기에서 갱신 알림 이메일을 받게 됩니다. 기본값은 비어 있습니다.
    • --accountkey는 계정 개인 키를 저장하는 파일입니다. 기본적으로 --config-home에 저장됩니다.
    • --useragent는 Lets Encrypt로 전송하는 데 사용되는 사용자 에이전트 헤더 값입니다.\n

    설치가 완료되면 acme.sh 버전을 확인하여 확인할 수 있습니다.

    acme.sh --version
    # v2.8.1

    이 프로그램에는 사용할 수 있는 많은 명령과 매개변수가 있습니다. 도움을 받으려면 다음을 실행할 수 있습니다.

    acme.sh --help

    SSL 인증서 발급

    이미 실행 중인 웹 서버가 있는 경우 웹루트 모드를 사용해야 합니다. 웹 루트 폴더에 대한 쓰기 액세스 권한이 필요합니다. 다음은 웹 루트 모드를 통해 인증서를 얻는 데 사용할 수 있는 몇 가지 예제 명령입니다.

    단일 도메인 + Webroot 모드:

    acme.sh --issue -d example.com --webroot /var/www/example.com

    동일한 인증서 + Webroot 모드의 여러 도메인:

    acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com

    단일 도메인 ECC/ECDSA 인증서 + Webroot 모드:

    acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256

    동일한 ECC/ECDSA 인증서 + Webroot 모드의 여러 도메인:

    acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com --keylength ec-256

    --keylength의 유효한 값은 2048(기본값), 3072, 4096, 8192 또는 ec-256, ec-384입니다.

    웹 서버가 없거나 SMTP 또는 FTP 서버에 있는 경우 80 포트가 비어 있으면 독립형 모드를 사용할 수 있습니다. 이 모드를 사용하려면 먼저 socat 도구를 설치해야 합니다.

    단일 도메인 + 독립형 모드:

    acme.sh --issue -d example.com --standalone

    동일한 인증서 + 독립형 모드의 여러 도메인:

    acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone

    웹 서버가 없거나 SMTP 또는 FTP 서버에 있는 경우 443 포트는 무료입니다. 독립형 TLS ALPN 모드를 사용할 수 있습니다. Acme.sh에는 독립형 TLS 웹 서버가 내장되어 있으며 443 포트에서 수신 대기하여 인증서를 발급할 수 있습니다.

    단일 도메인 + 독립형 TLS ALPN 모드:

    acme.sh --issue -d example.com --alpn

    동일한 인증서 + 독립형 TLS ALPN 모드의 여러 도메인:

    acme.sh --issue -d example.com -d www.example.com --alpn

    자동 DNS API 통합

    DNS 제공업체에 API가 있는 경우 acme.sh는 API를 사용하여 자동으로 DNS TXT 레코드를 추가할 수 있습니다. 인증서가 자동으로 발급되고 갱신됩니다. 수동 작업이 필요하지 않습니다. 인증서를 요청하기 전에 API 키와 이메일을 구성하십시오. 현재 acme.sh는 기본적으로 약 60개의 DNS 제공업체와 자동 DNS 통합을 제공하며 기본적으로 지원되지 않는 서비스에 대해 Lexicon 도구를 활용할 수 있습니다.

    단일 도메인 + CloudFlare DNS API 모드:

    export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
    export CF_Email=""
    acme.sh --issue -d example.com --dns dns_cf

    와일드카드 인증서 + CloudFlare DNS API 모드:

    export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
    export CF_Email=""
    acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf

    DNS 제공업체가 API 액세스를 지원하지 않는 경우 TXT 레코드를 수동으로 추가할 수 있습니다.

    acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com

    아래와 같은 출력이 표시되어야 합니다.

    Add the following txt record:
    Domain:_acme-challenge.example.com
    Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
    
    Add the following txt record:
    Domain:_acme-challenge.www.example.com
    Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
    Please add those txt records to the domains. Waiting for the dns to take effect.

    그런 다음 renew 인수를 사용하여 다시 실행하십시오.

    acme.sh --renew -d example.com

    이것은 DNS 수동 모드이며 인증서를 자동으로 갱신할 수 없습니다. 인증서를 갱신할 때가 되면 직접 도메인에 새 TXT 레코드를 추가해야 합니다. 따라서 자동화할 수 있는 DNS API 모드를 대신 사용하세요.

    Lets encrypt SSL 인증서 설치

    인증서가 생성된 후 발급된 인증서를 디스크의 올바른 위치에 설치/복사할 수 있습니다. 이 명령을 사용하여 인증서를 대상 파일에 복사해야 합니다. ~/.acme.sh/ 폴더의 인증서 파일을 사용하지 마십시오. 내부 전용이며 폴더 구조는 다음에서 변경될 수 있습니다. 미래. 설치하기 전에 인증서를 저장할 합리적인 디렉토리를 만드세요. 예를 들어 웹 서버에 따라 /etc/letsencrypt, /etc/nginx/ssl 또는 /etc/apache2/ssl일 수 있습니다. SSL 관련 항목을 저장하는 소프트웨어 및 자신의 기본 설정.

    아파치 예시:

    acme.sh --install-cert \
    --domain example.com \
    --cert-file /path/to/cert/cert.pem \
    --key-file /path/to/keyfile/key.pem \
    --fullchain-file /path/to/fullchain/fullchain.pem \
    --reloadcmd "sudo systemctl reload apache2.service"

    Nginx 예시:

    acme.sh --install-cert \
    --domain example.com \
    --cert-file /path/to/cert/cert.pem \
    --key-file /path/to/keyfile/key.pem \
    --fullchain-file /path/to/fullchain/fullchain.pem \
    --reloadcmd "sudo systemctl reload nginx.service"

    매개변수는 .acme.sh 구성 파일에 저장되므로 cron 작업이 갱신될 때 이 파일을 읽으므로 시스템에 맞게 설정해야 합니다. "reloadcmd"는 운영 체제 및 초기화 시스템에 따라 다릅니다.

    Lets Encrypt SSL 인증서 갱신

    인증서를 수동으로 갱신할 필요가 없습니다. 모든 인증서는 60일마다 자동으로 갱신됩니다.

    그러나 인증서를 강제로 갱신할 수도 있습니다.

    acme.sh --renew -d example.com --force

    또는 ECC 인증서의 경우:

    acme.sh --renew -d example.com --force --ecc

    acme.sh를 업그레이드하는 방법

    다음을 사용하여 acme.sh를 최신 코드로 업데이트할 수 있습니다.

    acme.sh --upgrade

    자동 업그레이드를 활성화할 수도 있습니다.

    acme.sh --upgrade --auto-upgrade

    그러면 acme.sh가 자동으로 최신 상태로 유지됩니다.

    그게 다야. 문제가 발생하면 acme.sh 위키 페이지(https://github.com/Neilpang/acme.sh/wiki)를 방문하세요.

    연결

    • https://letsencrypt.org/