Skip to content

Commit 1d8f91b

Browse files
authored
Fix pebble and acmedns tests (#889)
* Use local copies of pebble certs as docker image contains outdated versions * Update the preferred chain used in Staging * Put test API keys in github secrets, add code to create/delete test domains to prevent misuse * Simplify dns_add_acmedns
1 parent f8e0cd2 commit 1d8f91b

12 files changed

Lines changed: 168 additions & 60 deletions

.github/workflows/run-tests-staging-acmedns.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@ on:
1414

1515

1616
env:
17-
DYNU_API_KEY: ${{ secrets.DYNU_API_KEY == '' && '65cXefd35XbYf36546eg5dYcZT6X52Y2' || secrets.DYNU_API_KEY }}
18-
17+
DYNU_API_KEY: ${{ secrets.DYNU_API_KEY }}
18+
ACMEDNS_API_KEY: ${{ secrets.ACMEDNS_API_KEY }}
19+
ACMEDNS_API_USER: ${{ secrets.ACMEDNS_API_USER }}
20+
ACMEDNS_SUBDOMAIN: ${{ secrets.ACMEDNS_SUBDOMAIN }}
1921
jobs:
2022
test-ubuntu-acmedns:
2123
runs-on: ubuntu-latest

.github/workflows/run-tests-staging-dynu.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Run tests against Staging server using Dynu
22
on:
33
workflow_dispatch
44
env:
5-
DYNU_API_KEY: ${{ secrets.DYNU_API_KEY == '' && '65cXefd35XbYf36546eg5dYcZT6X52Y2' || secrets.DYNU_API_KEY }}
5+
DYNU_API_KEY: ${{ secrets.DYNU_API_KEY }}
66
jobs:
77
test-centos7-dynu:
88
runs-on: ubuntu-latest

dns_scripts/dns_add_acmedns

Lines changed: 10 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
#!/usr/bin/env bash
22

3-
. "$(dirname "${BASH_SOURCE}")/../common.shrc" || {
4-
echo "Unable to load shared Bash code"
5-
exit 1
6-
} >&2
7-
83
# ACMEDNS env variables can be set in a config file at domain level
94
acme_config="$DOMAIN_DIR/acme-dns.cfg"
105
[ -s "$acme_config" ] && . "$acme_config"
@@ -37,29 +32,13 @@ if [[ -z "$token" ]]; then
3732
exit 1
3833
fi
3934

40-
curl_params=(
41-
-H "accept: application/json"
42-
-H "X-Api-Key: $apikey"
43-
-H "X-Api-User: $apiuser"
44-
-H 'Content-Type: application/json'
45-
)
46-
47-
generate_post_data()
48-
{
49-
cat <<EOF
50-
{
51-
"subdomain": "$apisubdomain",
52-
"txt": "$token"
53-
}
54-
EOF
55-
}
56-
57-
curl.do \
58-
"${curl_params[@]}" \
59-
-X POST "${API}" \
60-
--data "$(generate_post_data)" \
61-
>/dev/null || {
62-
echo 'Error: DNS challenge not added: unknown error'
63-
exit 1
64-
} >&2
65-
exit 0
35+
curl --fail --silent -X POST "${API}" \
36+
-H "accept: application/json" \
37+
-H "X-Api-Key: $apikey" \
38+
-H "X-Api-User: $apiuser" \
39+
-H 'Content-Type: application/json' \
40+
-d '{
41+
"subdomain": "'"${apisubdomain}"'",
42+
"txt": "'"$token"'"
43+
}'
44+

docker-compose.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ services:
1010
ports:
1111
- 14000:14000 # HTTPS ACME API
1212
- 15000:15000 # HTTPS Management API
13+
volumes:
14+
- ./pebble-certificates:/test/certs/localhost
1315
networks:
1416
acmenet:
1517
ipv4_address: 10.30.50.2

pebble-certificates/cert.pem

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDMDCCAhigAwIBAgIILDt8c2fMw2IwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE
3+
AxMVbWluaWNhIHJvb3QgY2EgNTM0NWU2MB4XDTI1MDkwMzIzNDAwNVoXDTI3MTAw
4+
MzIzNDAwNVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF
5+
AAOCAQ8AMIIBCgKCAQEAmxTFtw113RK70H9pQmdKs9AxhFmnQ6BdDtp3jOZlWlUO
6+
0BltMXOUML5905etgtCbcC6RdKRtgSAiDfgx3VWiFMJH++4gUtnaB9SN8GhNSPBp
7+
FfSa2JhWPo9HQNUsAZqlGTV4SzcGRqtWvdZxUiOfQ2TcvyXIqsaD19ivvqI1NhT6
8+
bl3tredTZlzLLM6Wvkw6hfyHrJAPQP8LOlCIeDM4YIce6Gstv6qo9iCD4wJiY4u9
9+
5HVL7RK8t8JpZAb7VR+dPhbHEvVpjwuYd5Q05OZ280gFyrhbrKLbqst104GOQT4k
10+
QMJGWxGONyTX6np0Dx6O5jU7dvYvjVVawbJwGuaL6wIDAQABo3oweDAOBgNVHQ8B
11+
Af8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNV
12+
HSMEGDAWgBSu8RGpErgYUoYnQuwCq+/ggTiEjDAiBgNVHREEGzAZgglsb2NhbGhv
13+
c3SCBnBlYmJsZYcEfwAAATANBgkqhkiG9w0BAQsFAAOCAQEAAB0gkekXCNOwqWmY
14+
vQ2lLJ8Zk2WzQ9B+VOC27IgxEEuskZyCpyXAbJB9sCGQWZhAARyaI4SPRGGagcug
15+
d1SwDWdPGeSJzF3aDnXDYoP9Zw2KqiqVZTngeoiw8Yn0F8PNriANwRLybouX7mMc
16+
4V7T5+2k4SUs7pFH4KO0a0XBCcjXDjdKuBljftRTXCHzJzfRtmieCCuZlpnp5sHx
17+
hKa/uxKGyyZB+4Y3MrzsiQSCBOr9G4TH9RofmNcawl+tsVe08zLV/XVhrbakKEs7
18+
Y7MGHSj3BkPFF32NObc0znqWzTaUD9hU+rXWGANM4sXd4dagdnxfrb7i0WYhcUFj
19+
9Try8Q==
20+
-----END CERTIFICATE-----

pebble-certificates/key.pem

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEowIBAAKCAQEAmxTFtw113RK70H9pQmdKs9AxhFmnQ6BdDtp3jOZlWlUO0Blt
3+
MXOUML5905etgtCbcC6RdKRtgSAiDfgx3VWiFMJH++4gUtnaB9SN8GhNSPBpFfSa
4+
2JhWPo9HQNUsAZqlGTV4SzcGRqtWvdZxUiOfQ2TcvyXIqsaD19ivvqI1NhT6bl3t
5+
redTZlzLLM6Wvkw6hfyHrJAPQP8LOlCIeDM4YIce6Gstv6qo9iCD4wJiY4u95HVL
6+
7RK8t8JpZAb7VR+dPhbHEvVpjwuYd5Q05OZ280gFyrhbrKLbqst104GOQT4kQMJG
7+
WxGONyTX6np0Dx6O5jU7dvYvjVVawbJwGuaL6wIDAQABAoIBAGW9W/S6lO+DIcoo
8+
PHL+9sg+tq2gb5ZzN3nOI45BfI6lrMEjXTqLG9ZasovFP2TJ3J/dPTnrwZdr8Et/
9+
357YViwORVFnKLeSCnMGpFPq6YEHj7mCrq+YSURjlRhYgbVPsi52oMOfhrOIJrEG
10+
ZXPAwPRi0Ftqu1omQEqz8qA7JHOkjB2p0i2Xc/uOSJccCmUDMlksRYz8zFe8wHuD
11+
XvUL2k23n2pBZ6wiez6Xjr0wUQ4ESI02x7PmYgA3aqF2Q6ECDwHhjVeQmAuypMF6
12+
IaTjIJkWdZCW96pPaK1t+5nTNZ+Mg7tpJ/PRE4BkJvqcfHEOOl6wAE8gSk5uVApY
13+
ZRKGmGkCgYEAzF9iRXYo7A/UphL11bR0gqxB6qnQl54iLhqS/E6CVNcmwJ2d9pF8
14+
5HTfSo1/lOXT3hGV8gizN2S5RmWBrc9HBZ+dNrVo7FYeeBiHu+opbX1X/C1HC0m1
15+
wJNsyoXeqD1OFc1WbDpHz5iv4IOXzYdOdKiYEcTv5JkqE7jomqBLQk8CgYEAwkG/
16+
rnwr4ThUo/DG5oH+l0LVnHkrJY+BUSI33g3eQ3eM0MSbfJXGT7snh5puJW0oXP7Z
17+
Gw88nK3Vnz2nTPesiwtO2OkUVgrIgWryIvKHaqrYnapZHuM+io30jbZOVaVTMR9c
18+
X/7/d5/evwXuP7p2DIdZKQKKFgROm1XnhNqVgaUCgYBD/ogHbCR5RVsOVciMbRlG
19+
UGEt3YmUp/vfMuAsKUKbT2mJM+dWHVlb+LZBa4pC06QFgfxNJi/aAhzSGvtmBEww
20+
xsXbaceauZwxgJfIIUPfNZCMSdQVIVTi2Smcx6UofBz6i/Jw14MEwlvhamaa7qVf
21+
kqflYYwelga1wRNCPopLaQKBgQCWsZqZKQqBNMm0Q9yIhN+TR+2d7QFjqeePoRPl
22+
1qxNejhq25ojE607vNv1ff9kWUGuoqSZMUC76r6FQba/JoNbefI4otd7x/GzM9uS
23+
8MHMJazU4okwROkHYwgLxxkNp6rZuJJYheB4VDTfyyH/ng5lubmY7rdgTQcNyZ5I
24+
majRYQKBgAMKJ3RlII0qvAfNFZr4Y2bNIq+60Z+Qu2W5xokIHCFNly3W1XDDKGFe
25+
CCPHSvQljinke3P9gPt2HVdXxcnku9VkTti+JygxuLkVg7E0/SWwrWfGsaMJs+84
26+
fK+mTZay2d3v24r9WKEKwLykngYPyZw5+BdWU0E+xx5lGUd3U4gG
27+
-----END RSA PRIVATE KEY-----

pebble.minica.pem

Lines changed: 0 additions & 19 deletions
This file was deleted.

test/36-full-chain-inc-root.bats

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ EOF
3232
check_output_for_errors
3333

3434
if [ -n "$STAGING" ]; then
35-
PREFERRED_CHAIN="(STAGING) Doctored Durian Root CA X3"
35+
# https://letsencrypt.org/docs/staging-environment/
36+
PREFERRED_CHAIN="(STAGING) Pretend Pear X1"
3637
else
3738
# pebble doesn't support CA Issuers so the fullchain.crt will just contain the certificate (code path means it won't contain the intermediate cert in this case)
3839
# This is testing that requesting FULL_CHAIN_INCLUDE_ROOT doesn't fail if there is no CA Issuers in the certificate
@@ -76,7 +77,7 @@ EOF
7677
assert [ -e "${INSTALL_DIR}/.getssl/${GETSSL_CMD_HOST}/${GETSSL_CMD_HOST}.ec.crt" ]
7778

7879
if [ -n "$STAGING" ]; then
79-
PREFERRED_CHAIN="(STAGING) Doctored Durian Root CA X3"
80+
PREFERRED_CHAIN="(STAGING) Pretend Pear X1"
8081
else
8182
# pebble doesn't support CA Issuers so the fullchain.crt will just contain the certificate (code path means it won't contain the intermediate cert in this case)
8283
# This is testing that requesting FULL_CHAIN_INCLUDE_ROOT doesn't fail if there is no CA Issuers in the certificate

test/Dockerfile-ubuntu-acmedns

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ ENV DEBIAN_FRONTEND=noninteractive
77

88
# Ensure tests in this image use the staging server
99
ENV staging="true"
10-
# 2016ENV dynamic_dns "acme-dns"
11-
ENV ACMEDNS_API_USER=49ac5f6d-74cd-4aca-acfe-f9457af7894c
12-
ENV ACMEDNS_API_KEY=2NPGF8cH7PeTrHZWXImi1prhTsQGz2pdCC7Za5zE
13-
ENV ACMEDNS_SUBDOMAIN=7268181b-7075-4dce-be51-9c20c205cf6e
1410

1511
# Update and install required software
1612
RUN apt-get update --fix-missing

test/README-Testing.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ For dynu.com:
2424
- Add DYNU_API_KEY to your repository's environment secrets. The value is your account's API Key.
2525
- Add domains \<reponame>-centos7-getssl.freedns.org, wild-\<reponame>-centos7.freedns.org, \<reponame>-ubuntu-getssl.freedns.org, and wild-\<reponame>-ubuntu-getssl.freedns.org
2626

27+
For ACME DNS (also needs Dynu)
28+
29+
- Register to get a user, key and subdomain from acme-dns.io (see https://github.com/joohoi/acme-dns?tab=readme-ov-file)
30+
- Create a CNAME _acme-challenge.ubuntu-acmedns-getssl.freeddns.org. to ${ACMEDNS_SUBDOMAIN}.auth.acme-dns.io (this is done automatically in run-test.sh)
31+
2732
To run dynamic DNS tests outside the CI environment, you need accounts without \<reponame> in the domain names. Export the environment variable corresponding to the secrets (with the same values).
2833

2934
For individual accounts, \<reponame> is your github account name.

0 commit comments

Comments
 (0)