<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Certbot 驗證前和驗證后掛鉤

    驗證前和驗證后掛鉤

    在手動模式下運行時,Certbot允許指定驗證前和驗證后掛鉤。用于指定這些腳本的標志分別是--manual-auth-hook--manual-cleanup-hook,可以如下使用:

    certbot certonly --manual --manual-auth-hook /path/to/http/authenticator.sh --manual-cleanup-hook /path/to/http/cleanup.sh -d secure.example.com

    這將運行authenticator.sh腳本,嘗試進行驗證,然后運行cleanup.sh腳本。另外,certbot會將相關的環境變量傳遞給以下腳本:

    CERTBOT_DOMAIN:正在驗證的域
    CERTBOT_VALIDATION:驗證字符串
    CERTBOT_TOKEN:HTTP-01挑戰的資源名稱部分(僅適用于HTTP-01)
    CERTBOT_REMAINING_CHALLENGES:當前挑戰之后剩余的挑戰數
    CERTBOT_ALL_DOMAINS:用逗號分隔的當前證書所面臨的所有域的列表

    另外用于清理:

    CERTBOT_AUTH_OUTPUT:無論auth腳本寫入stdout的內容如何
    HTTP-01的示例用法:

    certbot certonly --manual --preferred-challenges=http --manual-auth-hook /path/to/http/authenticator.sh --manual-cleanup-hook /path/to/http/cleanup.sh -d secure.example.com

    /path/to/http/authenticator.sh

    #!/bin/bash
    echo $CERTBOT_VALIDATION > /var/www/htdocs/.well-known/acme-challenge/$CERTBOT_TOKEN

    /path/to/http/cleanup.sh

    #!/bin/bash
    rm -f /var/www/htdocs/.well-known/acme-challenge/$CERTBOT_TOKEN

    DNS-01(Cloudflare API v4)的用法示例(僅出于示例目的,請勿原樣使用)

    certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /path/to/dns/authenticator.sh --manual-cleanup-hook /path/to/dns/cleanup.sh -d secure.example.com

    /path/to/dns/authenticator.sh

    #!/bin/bash
    
    # Get your API key from https://www.cloudflare.com/a/account/my-account
    API_KEY="your-api-key"
    EMAIL="your.email@example.com"
    
    # Strip only the top domain to get the zone id
    DOMAIN=$(expr match "$CERTBOT_DOMAIN" '.*\.\(.*\..*\)')
    
    # Get the Cloudflare zone id
    ZONE_EXTRA_PARAMS="status=active&page=1&per_page=20&order=status&direction=desc&match=all"
    ZONE_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$DOMAIN&$ZONE_EXTRA_PARAMS" \
         -H     "X-Auth-Email: $EMAIL" \
         -H     "X-Auth-Key: $API_KEY" \
         -H     "Content-Type: application/json" | python -c "import sys,json;print(json.load(sys.stdin)['result'][0]['id'])")
    
    # Create TXT record
    CREATE_DOMAIN="_acme-challenge.$CERTBOT_DOMAIN"
    RECORD_ID=$(curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \
         -H     "X-Auth-Email: $EMAIL" \
         -H     "X-Auth-Key: $API_KEY" \
         -H     "Content-Type: application/json" \
         --data '{"type":"TXT","name":"'"$CREATE_DOMAIN"'","content":"'"$CERTBOT_VALIDATION"'","ttl":120}' \
                 | python -c "import sys,json;print(json.load(sys.stdin)['result']['id'])")
    # Save info for cleanup
    if [ ! -d /tmp/CERTBOT_$CERTBOT_DOMAIN ];then
            mkdir -m 0700 /tmp/CERTBOT_$CERTBOT_DOMAIN
    fi
    echo $ZONE_ID > /tmp/CERTBOT_$CERTBOT_DOMAIN/ZONE_ID
    echo $RECORD_ID > /tmp/CERTBOT_$CERTBOT_DOMAIN/RECORD_ID
    
    # Sleep to make sure the change has time to propagate over to DNS
    sleep 25

    /path/to/dns/cleanup.sh

    #!/bin/bash
    
    # Get your API key from https://www.cloudflare.com/a/account/my-account
    API_KEY="your-api-key"
    EMAIL="your.email@example.com"
    
    if [ -f /tmp/CERTBOT_$CERTBOT_DOMAIN/ZONE_ID ]; then
            ZONE_ID=$(cat /tmp/CERTBOT_$CERTBOT_DOMAIN/ZONE_ID)
            rm -f /tmp/CERTBOT_$CERTBOT_DOMAIN/ZONE_ID
    fi
    
    if [ -f /tmp/CERTBOT_$CERTBOT_DOMAIN/RECORD_ID ]; then
            RECORD_ID=$(cat /tmp/CERTBOT_$CERTBOT_DOMAIN/RECORD_ID)
            rm -f /tmp/CERTBOT_$CERTBOT_DOMAIN/RECORD_ID
    fi
    
    # Remove the challenge TXT record from the zone
    if [ -n "${ZONE_ID}" ]; then
        if [ -n "${RECORD_ID}" ]; then
            curl -s -X DELETE "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
                    -H "X-Auth-Email: $EMAIL" \
                    -H "X-Auth-Key: $API_KEY" \
                    -H "Content-Type: application/json"
        fi
    fi

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类