Privates DNS mit Let’s Encrypt und Adguard Home

Allgemein

Gefühlt seit Anfang Oktober ging auf meinen Smartphones/Tablets die Einstellungen für privates DNS zu den von mir selbst gehosteten DNS-Server (AdGuard Home) nicht mehr. Über einen Monat hat mich dieses Problem jetzt beschäftigt. Zuerst nahm ich an, das Vodafone irgendwas geändert hat, da ich zeitweise auf meinen mobilen Endgeräten ausschließlich eine IPv6-Adresse bekommen habe und mein bisheriger vServer-Provider nur IPv4 unterstützt. Also habe ich den Provider gewechselt, bin mit meiner Domain umgezogen und habe IPv6 konfiguriert. Auch habe ich Docker, alle Container inkl. AdGuard Home in diesem Zusammenhang komplett neu aufgesetzt und auch das in Docker integrierte IPv6-NAT66 genutzt. Ja, ich bin kein Freund von NAT unter IPv6, denn an IP-Adressen mangelt es schließlich nicht, aber was soll’s. Bevor ich mir ein eigenes Ei lege, habe ich vorerst von einer individuellen Konfiguration abgesehen und Docker so installiert, wie Docker es für den Endnutzer vorsieht. Am Ende hat der Container keine Global Unique Address (2a03::), sondern eine Local Unique Address (fd00::), Docker nutzt ein NAT66, um zwischen diesen Netzen zu routen.

# ip -6 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2a03:4000:5b:824:4816:a2ff:fe85:4d18/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::4816:a2ff:fe85:4d18/64 scope link
       valid_lft forever preferred_lft forever
...
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
    inet6 fd00:dead:beef:c0::1/80 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::42:3fff:fe1d:fa6d/64 scope link
       valid_lft forever preferred_lft forever
    inet6 fe80::1/64 scope link
       valid_lft forever preferred_lft forever
...

#ip6tables -L
Chain DOCKER (3 references)
target     prot opt source               destination
...
ACCEPT     tcp      anywhere             fd00:dead:beef:c0:0:242:ac11:3  tcp dpt:domain-s
ACCEPT     udp      anywhere             fd00:dead:beef:c0:0:242:ac11:3  udp dpt:domain-s
...

Aber das hat alles nicht geholfen. Ich habe Zertifikate mit Let`s Encrypt neu generiert und installiert. Auch das hat nicht geholfen. Meine Fritzbox hat die DNS-over-TLS-Settings inklusive Zertifikate akzeptiert und umgesetzt, mein Smartphone und das Tablet wollte einfach nicht. Das einzige, was diese gemein haben, ist Android als Betriebssystem. Ich habe den Datenverkehr mit tcpdump auf dem Docker-Host/DNS-Server analyisiert:

#tcpdump -i docker0 -n 'ip6 host fd00:dead:beef:c0:0:242:ac11:3' and port 853
09:34:53.162901 IP6 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [S], seq 1671323040, win 65535, options [mss 1440,sackOK,TS val 1011599993 ecr 0,nop,wscale 8], length 0
09:34:53.162939 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080: Flags [S.], seq 4239390154, ack 1671323041, win 42840, options [mss 1440,sackOK,TS val 315576482 ecr 1011599993,nop,wscale 11], length 0
09:34:53.202568 IP6 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [.], ack 1, win 256, options [nop,nop,TS val 1011600024 ecr 315576482], length 0
09:34:53.215434 IP6 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [P.], seq 1:256, ack 1, win 256, options [nop,nop,TS val 1011600024 ecr 315576482], length 255
09:34:53.215449 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080: Flags [.], ack 256, win 21, options [nop,nop,TS val 315576534 ecr 1011600024], length 0
09:34:53.218059 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080: Flags [P.], seq 1:2857, ack 256, win 21, options [nop,nop,TS val 315576537 ecr 1011600024], length 2856
09:34:53.218081 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080: Flags [P.], seq 2857:4719, ack 256, win 21, options [nop,nop,TS val 315576537 ecr 1011600024], length 1862
09:34:53.268143 IP6 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [.], ack 1429, win 268, options [nop,nop,TS val 1011600082 ecr 315576537], length 0
09:34:53.268153 IP6 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [.], ack 2857, win 279, options [nop,nop,TS val 1011600083 ecr 315576537], length 0
09:34:53.268155 IP6 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [.], ack 4285, win 290, options [nop,nop,TS val 1011600083 ecr 315576537], length 0
09:34:53.268194 IP6 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [.], ack 4719, win 301, options [nop,nop,TS val 1011600083 ecr 315576537], length 0
09:34:53.273157 IP6 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [P.], seq 256:286, ack 4719, win 301, options [nop,nop,TS val 1011600084 ecr 315576537], length 30
09:34:53.273180 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080: Flags [.], ack 286, win 21, options [nop,nop,TS val 315576592 ecr 1011600084], length 0
09:34:53.273232 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080: Flags [F.], seq 4719, ack 286, win 21, options [nop,nop,TS val 315576592 ecr 1011600084], length 0
09:34:53.337973 IP6 2a00:20:c056:2880:11a1:8ce7:6e50:5ec.38080 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [R], seq 1671323326, win 0, length 0


#tcpdump -i docker0 -n 'ip6 host fd00:dead:beef:c0:0:242:ac11:3' and port 853
09:32:11.223052 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [S], seq 72838380, win 28800, options [mss 1440,sackOK,TS val 22703711 ecr 0,nop,wscale 7], length 0
09:32:11.223091 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [S.], seq 2474163512, ack 72838381, win 42840, options [mss 1440,sackOK,TS val 3707710723 ecr 22703711,nop,wscale 11], length 0
09:32:11.248965 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [.], ack 1, win 225, options [nop,nop,TS val 22703736 ecr 3707710723], length 0
09:32:11.257527 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [P.], seq 1:518, ack 1, win 225, options [nop,nop,TS val 22703739 ecr 3707710723], length 517
09:32:11.257556 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [.], ack 518, win 21, options [nop,nop,TS val 3707710757 ecr 22703739], length 0
09:32:11.260305 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [P.], seq 1:2857, ack 518, win 21, options [nop,nop,TS val 3707710760 ecr 22703739], length 2856
09:32:11.260332 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [P.], seq 2857:4719, ack 518, win 21, options [nop,nop,TS val 3707710760 ecr 22703739], length 1862
09:32:11.284581 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [.], ack 1429, win 248, options [nop,nop,TS val 22703773 ecr 3707710760], length 0
09:32:11.284589 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [.], ack 2857, win 270, options [nop,nop,TS val 22703773 ecr 3707710760], length 0
09:32:11.293202 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [.], ack 4285, win 292, options [nop,nop,TS val 22703775 ecr 3707710760], length 0
09:32:11.293208 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [.], ack 4719, win 315, options [nop,nop,TS val 22703776 ecr 3707710760], length 0
09:32:11.301811 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [P.], seq 518:582, ack 4719, win 315, options [nop,nop,TS val 22703792 ecr 3707710760], length 64
09:32:11.301843 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [.], ack 582, win 21, options [nop,nop,TS val 3707710801 ecr 22703792], length 0
09:32:11.327727 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [P.], seq 582:633, ack 4719, win 315, options [nop,nop,TS val 22703814 ecr 3707710801], length 51
09:32:11.327744 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [.], ack 633, win 21, options [nop,nop,TS val 3707710827 ecr 22703814], length 0
09:32:11.362257 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [P.], seq 4719:4743, ack 633, win 21, options [nop,nop,TS val 3707710862 ecr 22703814], length 24
09:32:11.362301 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [P.], seq 4743:4824, ack 633, win 21, options [nop,nop,TS val 3707710862 ecr 22703814], length 81
09:32:11.388268 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [.], ack 4824, win 315, options [nop,nop,TS val 22703877 ecr 3707710862], length 0
09:32:15.574317 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [P.], seq 633:693, ack 4824, win 315, options [nop,nop,TS val 22708063 ecr 3707710862], length 60
09:32:15.574359 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [.], ack 693, win 21, options [nop,nop,TS val 3707715074 ecr 22708063], length 0
09:32:15.600338 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [P.], seq 4824:4848, ack 693, win 21, options [nop,nop,TS val 3707715100 ecr 22708063], length 24
09:32:15.600378 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [P.], seq 4848:4922, ack 693, win 21, options [nop,nop,TS val 3707715100 ecr 22708063], length 74
09:32:15.625763 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [.], ack 4922, win 315, options [nop,nop,TS val 22708115 ecr 3707715100], length 0
09:32:23.628282 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [F.], seq 693, ack 4922, win 315, options [nop,nop,TS val 22716116 ecr 3707715100], length 0
09:32:23.628392 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [P.], seq 4922:4946, ack 694, win 21, options [nop,nop,TS val 3707723128 ecr 22716116], length 24
09:32:23.628444 IP6 fd00:dead:beef:c0:0:242:ac11:3.853 > 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629: Flags [F.], seq 4946, ack 694, win 21, options [nop,nop,TS val 3707723128 ecr 22716116], length 0
09:32:23.658467 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [R], seq 72839074, win 0, length 0
09:32:23.667103 IP6 2a02:810d:8000:69:ede2:7a4c:b486:58d7.33629 > fd00:dead:beef:c0:0:242:ac11:3.853: Flags [R], seq 72839074, win 0, length 0

Was mir dabei auffiel, war die Tatsache, das die TCP-Session mit (SYN, SYN/ACK, ACK,…FIN, RST) wie zu erwarten in beiden Fällen (oben Android, unten Fritzbox) sauber aufgebaut und beendet wird, aber die Menge an TLS-Datenpaketen sich in der Menge deutlich unterscheidet. Also hatte ich TLS, hier speziell Let`s Encrypt, in Verdacht, nicht das zu tun was ich will. Aber was nur, grundsätzlich sind die Pakete verschlüsselt, da kann ich also nicht reinschauen?

Also habe ich mir mit kdig (ein Tool, um DNS-Anfragen auch zu verschlüsselten DNS-Servern durchführen zu können), die DNS-Anfragen und -Antworten näher angesehen, Installation geht unter Linux mit apt install knot-dnsutils.

Ich habe 3 verschiedne DNS-Anfragen durchgeführt, zuerst eine nach google.de an meinen DNS-Server (also AdGuard Home unter dns.kwellkorn.de), dann eine an den voreingestellten DNS-Server (meine Fritzbox) und schließlich eine an den DNS-Server dns.adguard.com (der funktionierte auch weiterhin als privates DNS unter Android), um die Unterschiede zu analysieren.

$ kdig -d @dns.kwellkorn.de +tls-ca google.com
;; DEBUG: Querying for owner(google.com.), class(1), type(1), server(dns.kwellkorn.de), port(853), protocol(TCP)
;; DEBUG: TLS, imported 129 system certificates
;; DEBUG: TLS, received certificate hierarchy:
;; DEBUG:  #1, CN=kwellkorn.de
;; DEBUG:      SHA-256 PIN: bg2FyS0/LCKjxrhXKeXair0R5itPmImwh8anOB4n0Eo=
;; DEBUG:  #2, C=US,O=Let's Encrypt,CN=R3
;; DEBUG:      SHA-256 PIN: jQJTbIh0grw0/1TkHSumWb+Fs0Ggogr621gT3PvPKG0=
;; DEBUG:  #3, C=US,O=Internet Security Research Group,CN=ISRG Root X1
;; DEBUG:      SHA-256 PIN: C5+lpZ7tcVwmwQIMcRtPbsQtWLABXhQzejna0wHFr8M=
;; DEBUG: TLS, skipping certificate PIN check
;; DEBUG: TLS, The certificate is trusted.
;; TLS session (TLS1.3)-(ECDHE-X25519)-(RSA-PSS-RSAE-SHA256)-(AES-256-GCM)
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 16963
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1
;; EDNS PSEUDOSECTION:
;; Version: 0; flags: ; UDP size: 4096 B; ext-rcode: NOERROR
;; QUESTION SECTION:
;; google.com.                  IN      A
;; ANSWER SECTION:
google.com.             261     IN      A       142.250.184.206
;; Received 55 B
;; Time 2021-11-03 07:34:43 CET
;; From 2a03:4000:5b:824:4816:a2ff:fe85:4d18@853(TCP) in 43.0 ms

$ kdig -d  +tls-ca google.com
;; DEBUG: Querying for owner(google.com.), class(1), type(1), server(192.168.178.1), port(853), protocol(TCP)
;; DEBUG: TLS, imported 129 system certificates
;; WARNING: can't connect to 192.168.178.1@853(TCP)
;; ERROR: failed to query server 192.168.178.1@853(TCP)
;; DEBUG: Querying for owner(google.com.), class(1), type(1), server(fd00::2e91:abff:fe83:f857), port(853), protocol(TCP)
;; DEBUG: TLS, imported 129 system certificates
;; WARNING: can't connect to fd00::2e91:abff:fe83:f857@853(TCP)
;; ERROR: failed to query server fd00::2e91:abff:fe83:f857@853(TCP)
;; DEBUG: Querying for owner(google.com.), class(1), type(1), server(192.168.179.1), port(853), protocol(TCP)
;; DEBUG: TLS, imported 129 system certificates
;; WARNING: connection timeout for 192.168.179.1@853(TCP)
;; ERROR: failed to query server 192.168.179.1@853(TCP)
;; DEBUG: Querying for owner(google.com.), class(1), type(1), server(fd00::1:2e91:abff:fe83:f858), port(853), protocol(TCP)
;; DEBUG: TLS, imported 129 system certificates
;; WARNING: connection timeout for fd00::1:2e91:abff:fe83:f858@853(TCP)
;; ERROR: failed to query server fd00::1:2e91:abff:fe83:f858@853(TCP)

$ kdig -d @dns.adguard.com +tls-ca google.com
;; DEBUG: Querying for owner(google.com.), class(1), type(1), server(dns.adguard.com), port(853), protocol(TCP)
;; DEBUG: TLS, imported 129 system certificates
;; DEBUG: TLS, received certificate hierarchy:
;; DEBUG:  #1, C=CY,L=Limassol,O=Adguard Software Limited,CN=dns.adguard.com
;; DEBUG:      SHA-256 PIN: fmmIzVG3JL1tjDjTIBpE+C5WQbLGCHsdIqQVodQ7yPM=
;; DEBUG:  #2, C=US,O=DigiCert Inc,CN=DigiCert TLS Hybrid ECC SHA384 2020 CA1
;; DEBUG:      SHA-256 PIN: e0IRz5Tio3GA1Xs4fUVWmH1xHDiH2dMbVtCBSkOIdqM=
;; DEBUG: TLS, skipping certificate PIN check
;; DEBUG: TLS, The certificate is trusted.
;; TLS session (TLS1.3)-(ECDHE-X25519)-(ECDSA-SECP256R1-SHA256)-(AES-128-GCM)
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 57043
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1
;; EDNS PSEUDOSECTION:
;; Version: 0; flags: ; UDP size: 4096 B; ext-rcode: NOERROR
;; PADDING: 85 B
;; QUESTION SECTION:
;; google.com.                  IN      A
;; ANSWER SECTION:
google.com.             134     IN      A       172.217.16.46
;; Received 144 B
;; Time 2021-11-03 07:37:23 CET
;; From 2a10:50c0::ad1:ff@853(TCP) in 77.7 ms

Die Anfrage direkt an die Fritzbox schlägt fehl, weil diese keine Anfragen auf Port 853 akzeptiert – das sollte auch so sein. Die anderen sind beide erfolgreich, also mein DNS-Server (Adguard Home) ist grundsätzlich funktionstüchtig. Warum funktioniert das also mit den Android-Geräten nicht?

Also war ich erneut fest der Meinung, dass das Problem mit TLS und Let’s Encrypt zusammen hängen muss. Dabei habe ich über die Tatsache nachgedacht, das das ursprüngliche Root-Zertifiktat doch zum 30. September 2021 abgelaufen ist und mein Ausfall zeitlich recht nah im Zusammenhang stand. Ich habe mir das Zertifikat also näher angesehen:

Okay, die Zertifikatskette basiert auf R3, gefolgt von ISRG Root X1 (von unten nach oben). Das entspricht auch den Angaben von Let’s Encrypt, siehe hier. Im nächsten Schritt habe ich mit mit openssl das generierte Zertifikat genauer angesehen. Und zwar so, wie es tatsächlich auf dem DNS-Server (mein Adguard Home) installiert ist:

$ openssl s_client -showcerts -servername dns.kwellkorn.de -connect dns.kwellkorn.de:853
CONNECTED(00000003)
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = kwellkorn.de
verify return:1
---
Certificate chain
 0 s:CN = kwellkorn.de
   i:C = US, O = Let's Encrypt, CN = R3
-----BEGIN CERTIFICATE-----
MIIFLjCCBBagAwIBAgISA1SIIWuFlZL5sc6AIgTFs9VIMA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yMTEwMjgxMDE0NTdaFw0yMjAxMjYxMDE0NTZaMBcxFTATBgNVBAMT
DGt3ZWxsa29ybi5kZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANXO
qiPmkMxfsCEu5EHpHtXUjmTJ/p19m9qsHtMMPJlzEeXIuO+RGNEHLjjDJGWHWSJw
3+fNXZPyRksT/5RlozP43R3P0XLIXMovNesp1juo2pY76CukHe9x46UAA7WsUZTX
zwtYnZ2RaN4a3EL08DGsRy7q7KwSk4jww/DMoHfXAVJGmYaaxWJ//oKXDegdcvNv
8D8Cp8BrOR9TCfGf1z3IhBydHGrkVFe4lyRgANwlU1OOjpc9TsA8AvBUm94PzcXO
Yocdvri0zjljh6mip1llMltR9pj8cXgSOYMUtJr96/Qb05hXP7OZrV9JtNdvGRUQ
uxFyW4fQnVIc/ftVQ70CAwEAAaOCAlcwggJTMA4GA1UdDwEB/wQEAwIFoDAdBgNV
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4E
FgQU9+cnEGtcqMkL6Ar9CwLPQ9OLUacwHwYDVR0jBBgwFoAUFC6zF7dYVsuuUAlA
5h+vnYsUwsYwVQYIKwYBBQUHAQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vcjMu
by5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6Ly9yMy5pLmxlbmNyLm9yZy8w
JwYDVR0RBCAwHoIOKi5rd2VsbGtvcm4uZGWCDGt3ZWxsa29ybi5kZTBMBgNVHSAE
RTBDMAgGBmeBDAECATA3BgsrBgEEAYLfEwEBATAoMCYGCCsGAQUFBwIBFhpodHRw
Oi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB2
AEalVet1+pEgMLWiiWn0830RLEF0vv1JuIWr8vxw/m1HAAABfMacMk4AAAQDAEcw
RQIgTKidzVXsvErrCizS/YY/LXblpAGmuPTukydbRfwkVOQCIQCZVqKwA4zxMyG+
MH8AeZtzCNTpdkmZGqdRbJDETN9YwQB2AEHIyrHfIkZKEMahOglCh15OMYsbA+vr
S8do8JBilgb2AAABfMacNAcAAAQDAEcwRQIgfNM6hGmf1WTmwedrh07Pt8Sn0HER
DD4fRejl7KbLgsUCIQCa88jSUk0N6qdjJkzDfRNgb5zPs+bJrzAeF9cmGnMbnjAN
BgkqhkiG9w0BAQsFAAOCAQEAhVTaHrIRqI+U30d6jBZssXrYX2ShJzGALI8xlR0J
GjsclVDDf7lIWt1Y94IOFhWJkBottO6wUeFO8Bffko8FSRVg2K4vKLGhKsRHTbHm
rLZxl9S/nAqQ/qPxu7Z5iW/kSTfIe5nuKZz+7rhTBe/afQwpD1bAW8GgzI1ljcfA
Ibt6jxaGXMkDAIQngzfBek3cAJKjwTGmNI2r+9fHMOB/dMIJ5V3y0Ih2MxLlC1/Z
8TFv5NTu9etnw4tgMD+v0s7eLX8t+1mo7TyEhTS5NGT2CF9xwxL+J16XqQycHqqd
gNgAZQf0U5UOD0iKHGufpNZJgGCGoxjXZVub9a4FfdAVBw==
-----END CERTIFICATE-----
 1 s:C = US, O = Let's Encrypt, CN = R3
   i:C = US, O = Internet Security Research Group, CN = ISRG Root X1
-----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
nLRbwHOoq7hHwg==
-----END CERTIFICATE-----
 2 s:C = US, O = Internet Security Research Group, CN = ISRG Root X1
   i:O = Digital Signature Trust Co., CN = DST Root CA X3
-----BEGIN CERTIFICATE-----
MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC
ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL
wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D
LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK
4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5
bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y
sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ
Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4
FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc
SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql
PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND
TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1
c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx
+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB
ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu
b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E
U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu
MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC
5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW
9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG
WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O
he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC
Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5
-----END CERTIFICATE-----
---
Server certificate
subject=CN = kwellkorn.de

issuer=C = US, O = Let's Encrypt, CN = R3

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 4582 bytes and written 388 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: BE05AD7B841A55352FAADB49CC9538C05EAF4914DAF1086CC4155405C6C9F06C
    Session-ID-ctx:
    Resumption PSK: FAC7AB4789A07A2FA66154B54F5384B1BE86F71505CFABCBEC2E2C4D3C80D7584E6393F4650062B29DF2CC3C883A9FA7
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 604800 (seconds)
    TLS session ticket:
    0000 - ba 2c a0 4b b6 a2 45 db-4e 7a a2 2c 97 12 2e 09   .,.K..E.Nz.,....
    0010 - cf 21 60 25 54 28 b6 2b-08 d4 f1 64 7d 14 28 e2   .!`%T(.+...d}.(.
    0020 - 3c 0b 3d ab 34 b1 fd c6-92 5b bc 80 02 c4 06 78   <.=.4....[.....x
    0030 - ac aa 7d 71 d2 1e 53 a9-a9 2f 7d 48 a2 b1 00 13   ..}q..S../}H....
    0040 - bb 96 67 03 74 7e 2c bb-cc ad 16 5d c7 0b 88 22   ..g.t~,....]..."
    0050 - b6 f6 0a a7 4b e3 e2 d3-f2 cd 51 f8 dd 2d e1 d4   ....K.....Q..-..
    0060 - 89 c6 78 78 54 28 34 bb-49 51 30 45 13 cd ed aa   ..xxT(4.IQ0E....
    0070 - 47 16 63 bc 87 e0 2d bf-c3 1d 45 5b cd 9e 13 43   G.c...-...E[...C
    0080 - bf                                                .

    Start Time: 1635921580
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
read:errno=0

Ich fasse mal zusammen, im ersten Abschnitt sehe ich wie im Webbrowser ISRG Root X1 –> R3 –> kwellkorn.de. Passt!

Also weiter im Text mit der Certificate chain (Zertifikatskette) im Detail. Es geht los mit dem Glied 0 der Kette: Common Name ist kwellkorn.de, der Issuer (Aussteller) C = US, O = Let’s Encrypt, CN = R3. Klingt logisch, passt!

Glied 1 der Kette Common Name CN = R3, Aussteller C = US, O = Internet Security Research Group, CN = ISRG Root X1. Passt auch!

Glied 2 der Kette CN = ISRG Root X1, Aussteller O = Digital Signature Trust Co., CN = DST Root CA X3. Bitte? DST Root CA X3, das ist doch mit Stichtag 30. September 2021 abgelaufen. Sollte hier tatsächlich das Problem liegen?

Grundsätzlich wird die Zertifikatskette sauber abgearbeitet: kwellkorn.de –> R3 –> ISRG Root X1. Bei der Implementierung von DNS-over-TLS unter Android wird wohl noch weiter geprüft, nämlich den Aussteller für ISRG Root X1 und das Zertifikat von dessen Aussteller ist seit Ende September 21 jedoch abgelaufen. Deshalb sagt Android dann „Verbindung nicht möglich“, wenn es um privates DNS geht.

Ursache gefunden! Also ran an die Lösung! Und erneut habe ich mir von Let`s Enrcypt ein Wildcard-Zertifikat ausstellen lassen, diesmal aber mit ISRG Root X1 als bevorzugte Kette (und nicht wie im Standard DST Root CA X3).

# certbot certonly --manual --preferred-challenges=dns --preferred-chain="ISRG Root X1" -d kwellkorn.de -d *.kwellkorn.de
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Certificate not yet due for renewal

You have an existing certificate that has exactly the same domains or certificate name you requested and isn't close to expiry.
(ref: /etc/letsencrypt/renewal/kwellkorn.de.conf)

What would you like to do?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Keep the existing certificate for now
2: Renew & replace the certificate (may be subject to CA rate limits)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Renewing an existing certificate for kwellkorn.de and *.kwellkorn.de

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/kwellkorn.de/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/kwellkorn.de/privkey.pem
This certificate expires on 2022-02-01.
These files will be updated when the certificate renews.

NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Zertifikat von /etc/letsencrypt/live/kwellkorn.de heruntergeladen und unter AdGuard Home eingelesen. Auf dem Smartphone unter privates DNS die Domain meines Adguard Home eingetragen….Tada!

Zum Abschluss nochmal das Zertifikat auf dem DNS-Server gecheckt:

$ openssl s_client -showcerts -servername dns.kwellkorn.de -connect dns.kwellkorn.de:853
CONNECTED(00000003)
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = kwellkorn.de
verify return:1
---
Certificate chain
 0 s:CN = kwellkorn.de
   i:C = US, O = Let's Encrypt, CN = R3
-----BEGIN CERTIFICATE-----
MIIFLTCCBBWgAwIBAgISBMhmlS8VEl6pPt4qmR1HT7JyMA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yMTExMDMwNTQ0MjhaFw0yMjAyMDEwNTQ0MjdaMBcxFTATBgNVBAMT
DGt3ZWxsa29ybi5kZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANXB
EyQ3aUf+gGWxb7g2F8m9NG8SgkWZIxsWIofqLFWeZWZJqY3QUIki2WYGEHNH0HUU
FL9yJf234p+eR1yA2H8Pu1nVQn0mPnjmO7KJSi3RsgQV/0/AWXjoH5NuCky9hQjL
PVZJqAcSnjpXyCAhjH89JIYgxQNG9F0S5gRhUhi5FTugDXymGMveExgi4O+wR2Lh
tzstYsTTqyPsldga5LaQVJUe6IUDXN1zGOdqBcPSxFgH393psVdye9cXwzdb13bW
/Eh+0dIjXbUrFgrHeIU33nY2D+gD1avTeh5JYvUqvtPsw2vkINx8m+yW9EKlpK+G
/DHpwkJ6wAHsStY8bhcCAwEAAaOCAlYwggJSMA4GA1UdDwEB/wQEAwIFoDAdBgNV
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4E
FgQUXMMZ5ZQUXqhUjagkYl4DhqIHSnYwHwYDVR0jBBgwFoAUFC6zF7dYVsuuUAlA
5h+vnYsUwsYwVQYIKwYBBQUHAQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vcjMu
by5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6Ly9yMy5pLmxlbmNyLm9yZy8w
JwYDVR0RBCAwHoIOKi5rd2VsbGtvcm4uZGWCDGt3ZWxsa29ybi5kZTBMBgNVHSAE
RTBDMAgGBmeBDAECATA3BgsrBgEEAYLfEwEBATAoMCYGCCsGAQUFBwIBFhpodHRw
Oi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCCAQMGCisGAQQB1nkCBAIEgfQEgfEA7wB2
AEalVet1+pEgMLWiiWn0830RLEF0vv1JuIWr8vxw/m1HAAABfOSKtYQAAAQDAEcw
RQIgHle3NG5Mni/oDPvQJjlWBq9xEJHj1PnLPrMBuNRQxGYCIQDT1xXJPUsFgXRR
JpU8LFuwMkZa7DlZtGT45f2zF2N6oAB1AEHIyrHfIkZKEMahOglCh15OMYsbA+vr
S8do8JBilgb2AAABfOSKt10AAAQDAEYwRAIgL8jpPhZEVxCmiIbLeCHxyo8sC4iB
y77Hj7D8ocpwc9ECIBvoUCHG9VRibj25qiPMDeFmFZg4yDhchsOI9Go/cRdCMA0G
CSqGSIb3DQEBCwUAA4IBAQC3caQFY2Zo9Pxwx+EypDifvQM3l4UX76U00htSSeha
AqVEY89ORVTRkf4pBG74JVp9upU0nu4wDN6uxdDMlwBrEM4zghOkjvwZvGvUdbc+
YrARt+aMW0FfK+AymajVwE7Zl1yvI7r6YI1hpbhPMfS2gZJ9UwZ9nmzVSMlpM+ne
oN6Q9xh6Tsv1nxR+HXVXdj3V5lC+IyDteLjfiwA3rLP6e/vUScr8jqymCjHcGZfh
FGY+gIHgBre+iIWLeK4YT4JLbGYaIQgV2i2/xf2uB4OKL4A6J8Wak1PnKLaK544x
B0CQ8EiZV2eKtB6qkA680vxGVV0nK6qzHttNjIX5ENKU
-----END CERTIFICATE-----
 1 s:C = US, O = Let's Encrypt, CN = R3
   i:C = US, O = Internet Security Research Group, CN = ISRG Root X1
-----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
nLRbwHOoq7hHwg==
-----END CERTIFICATE-----
---
Server certificate
subject=CN = kwellkorn.de

issuer=C = US, O = Let's Encrypt, CN = R3

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3196 bytes and written 388 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: C8DE9B05CD94C29015BDDECA53DB307CAEB4DE6D3316D92A97D4407061159E37
    Session-ID-ctx:
    Resumption PSK: C4AB9DCAFDF6E537088CB7EE44B53855E91A77D4A9F668285059B0B7D0833EC98E7A48ED181BCB4538C0CA527EFFF30F
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 604800 (seconds)
    TLS session ticket:
    0000 - 34 b2 ae d6 36 97 a5 51-2b 35 a2 19 77 df 16 97   4...6..Q+5..w...
    0010 - 72 c6 a7 ff 58 c5 6c 56-eb d5 1b 98 ea 37 0a 72   r...X.lV.....7.r
    0020 - d3 25 79 95 4e 16 16 dc-3a b5 0c 23 73 13 9d d4   .%y.N...:..#s...
    0030 - d0 4b 7e ca 6e 98 2a e6-cf a3 eb 50 3d 26 46 72   .K~.n.*....P=&Fr
    0040 - c4 60 9b 1b f5 b1 7a 81-5e 06 a1 16 43 2e dc 43   .`....z.^...C..C
    0050 - 62 c7 5a ff 0b 91 73 c9-fc 12 a1 f6 66 0a 7e 75   b.Z...s.....f.~u
    0060 - 6b 6a d0 ae 27 44 3b 2e-12 b7 21 4d f7 50 aa 18   kj..'D;...!M.P..
    0070 - 1f 6f 15 ef 7e 5b e1 9a-25 04 9b e1 f6 2c 89 63   .o..~[..%....,.c
    0080 - 50                                                P

    Start Time: 1635929089
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
read:errno=0

Deutlich sieht man, das die Zertifikatskette jetzt bereits nach 2 Gliedern (Glied 0 und 1 (zuvor Glied 0-2)) endet.

So soll das sein. Jetzt kann ich wieder beruhigt schlafen 🙂

2 thoughts on “Privates DNS mit Let’s Encrypt und Adguard Home

    1. Gerne, das hat mich viel Nerven gekostet, um auf die Lösung zu kommen.
      Android bringt da ja nicht wirklich eine Fehlermeldung, mit der man etwas anfangen könnte.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert