[Eisfair] Certs_dehydrated dns-01 challenge mit Cloudflare

Christian Richter christian at richter-ch.de
Fr Nov 6 15:11:21 CET 2020


Am 06.11.20 um 08:20 schrieb Juergen Edner:
> Hallo Christian,
> 
>> so, was soll ich sagen?
>> Kaum macht man es richtig, so funktioniert es dann auch.
> 
> dies freut mich zu hören. Kannst Du eventuell noch kurz zusammen 
> schreiben wie die Paketkonfiguration und das eingebundene Skript
> nun aussehen? Dies könnte man dann im eisfair-Wiki ablegen und
> so auch anderen Anwendern einen schnelleren Einblick in das Thema
> geben.
> 
> Gruß Jürgen
> 


Hallo Jürgen,

dieser Bitte möchte ich gerne nachkommen.
Hier die relevanten Settings in der Config.


#------------------------------------------------------------------------------
# start settings
#------------------------------------------------------------------------------
...
DEHYDRATED_API_VERSION='2'

....
#------------------------------------------------------------------------------
# domain settings
#...
#------------------------------------------------------------------------------
DEHYDRATED_DOMAIN_1_NAME='xxxxxx.de:*.xxxxxx.de:xxxxxx.de
....


Hier habe ich erst meine Domain, dann die Wildcard Domain und 
schlußendlich nochmals die Domain angegeben
Wenn als erstes die Wildcard Domain angegeben wird kann die 
Zertifikatskette nicht vollständig aufgelöst werden.




#------------------------------------------------------------------------------
# hook scripts to execute
#------------------------------------------------------------------------------

DEHYDRATED_HOOK_CHAIN='no'
DEHYDRATED_HOOK_CMD_N='4'
DEHYDRATED_HOOK_CMD_1_ACTIVE='yes'
DEHYDRATED_HOOK_CMD_1_TYPE='deploy_challenge'
DEHYDRATED_HOOK_CMD_1_EXEC='/var/certs/cfhookbash/hook.sh'
DEHYDRATED_HOOK_CMD_1_OPTIONS='deploy_challenge'

DEHYDRATED_HOOK_CMD_2_ACTIVE='yes'
DEHYDRATED_HOOK_CMD_2_TYPE='deploy_cert'
DEHYDRATED_HOOK_CMD_2_EXEC='/var/install/config.d/certs_dehydrated.sh'
DEHYDRATED_HOOK_CMD_2_OPTIONS='--create-eisfair-cert'

DEHYDRATED_HOOK_CMD_3_ACTIVE='yes'
DEHYDRATED_HOOK_CMD_3_TYPE='clean_challenge'
DEHYDRATED_HOOK_CMD_3_EXEC='/var/install/config.d/certs_dehydrated.sh'
DEHYDRATED_HOOK_CMD_3_OPTIONS='--cleanup-certs'

DEHYDRATED_HOOK_CMD_4_ACTIVE='yes'
DEHYDRATED_HOOK_CMD_4_TYPE='exit_hook'
DEHYDRATED_HOOK_CMD_4_EXEC='/var/install/config.d/certs_dehydrated.sh'
DEHYDRATED_HOOK_CMD_4_OPTIONS='--restart-eisfair-services-on-request'



Als Command_1 kommt kommt meine Hook zum Einsatz:

> #!/usr/bin/env bash
> 
> prefix="_acme-challenge."
> 
> hookDirectory=$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )
> 
> global_api_key="xxxxxxxxxxxx"     	# Cloudflare Global API-Key
> zones="xxxxxxxxxx"			# Zonen ID
> email="xxxxxxxxx at xxxxx.xx"		# Email-Adresse mit der man sich bei Claoudflare registriert hat
> 
> 
> 
> deploy_challenge() {
> 
>     if [ -z $api_token ]; then
>         # New-style API token not found, fall back to global API key
>         curl -X POST "https://api.cloudflare.com/client/v4/zones/${zones}/dns_records"\
>             -H "X-Auth-Email: ${email}"\
>             -H "X-Auth-Key: ${global_api_key}"\
>             -H "Content-Type: application/json"\
>             --data '{"type":"TXT","name":"'${prefix}${DOMAIN}'","content":"'${TOKEN_VALUE}'","ttl":120,"priority":10,"proxied":false}'\
>             -o "${hookDirectory}/${DOMAIN}.txt" | jq -r '{"result"}[] | .[0] | .id'
>     else
>         curl -X POST "https://api.cloudflare.com/client/v4/zones/${zones}/dns_records"\
>             -H "Authorization: Bearer ${api_token}"\
>             -H "Content-Type: application/json"\
>             --data '{"type":"TXT","name":"'${prefix}${DOMAIN}'","content":"'${TOKEN_VALUE}'","ttl":120,"priority":10,"proxied":false}'\
>             -o "${hookDirectory}/${DOMAIN}.txt" | jq -r '{"result"}[] | .[0] | .id'
>     fi
> 
>     # Add delay to get the new DNS record
>     local DELAY=10;
>     echo "+++ Wait for ${DELAY} seconds. +++";
>     while [ $DELAY -gt 0 ]; do
>         sleep 1;
>        : $((DELAY--))
>     done
> 
> }



-- 
Gruß Christian


Mehr Informationen über die Mailingliste Eisfair