Zertifikatsprobleme mit Docker + mrbs

Hallo,

ich habe, wie in Docker KISS + linuxmuster-mrbs beschrieben einen mrbs-Server aufgesetzt.
Heute habe ich gemerkt, dass das letsencrypt-Zertifikat abgelaufen ist.

Ein dehydrated -c hat folgende Ausgabe ergeben:

root@docker:~# dehydrated -c
# INFO: Using main config file /etc/dehydrated/config
Processing docker.staufer-gymnasium.de
 + Checking domain name(s) of existing cert... unchanged.
 + Checking expire date of existing cert...
 + Valid till Mar  7 11:34:45 2020 GMT Certificate will not expire
(Longer than 30 days). Skipping renew!
Processing mrbs.staufer-gymnasium.de
 + Checking domain name(s) of existing cert... unchanged.
 + Checking expire date of existing cert...
 + Valid till Dec  7 07:30:14 2019 GMT Certificate will expire
(Less than 30 days). Renewing!
 + Signing domains...
 + Generating private key...
 + Generating signing request...
Can't load /root/.rnd into RNG
140189093441984:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd
 + Requesting new certificate order from CA...
 + Received 1 authorizations URLs from the CA
 + Handling authorization for mrbs.staufer-gymnasium.de
 + 1 pending challenge(s)
 + Deploying challenge tokens...
 + Responding to challenge for mrbs.staufer-gymnasium.de authorization...
 + Cleaning challenge tokens...
 + Challenge validation has failed :(
ERROR: Challenge is invalid! (returned: invalid) (result: {
  "type": "http-01",
  "status": "invalid",
  "error": {
    "type": "urn:ietf:params:acme:error:unauthorized",
    "detail": "Invalid response from https://mrbs.staufer-gymnasium.de/.well-known/acme-challenge/bKfeB489HMvbl-8zUarpbAl1PA90p7VdnpCXysUvzvk [141.10.70.29]: \"\u003c!DOCTYPE HTML PUBLIC \\\"-//IETF//DTD HTML 2.0//EN\\\"\u003e\\n\u003chtml\u003e\u003chead\u003e\\n\u003ctitle\u003e404 Not Found\u003c/title\u003e\\n\u003c/head\u003e\u003cbody\u003e\\n\u003ch1\u003eNot Found\u003c/h1\u003e\\n\u003cp\"",
    "status": 403
  },
  "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/1621199621/6YND2A",
  "token": "bKfeB489HMvbl-8zUarpbAl1PA90p7VdnpCXysUvzvk",
  "validationRecord": [
    {
      "url": "http://mrbs.staufer-gymnasium.de/.well-known/acme-challenge/bKfeB489HMvbl-8zUarpbAl1PA90p7VdnpCXysUvzvk",
      "hostname": "mrbs.staufer-gymnasium.de",
      "port": "80",
      "addressesResolved": [
        "141.10.70.29"
      ],
      "addressUsed": "141.10.70.29"
    },
    {
      "url": "https://mrbs.staufer-gymnasium.de/.well-known/acme-challenge/bKfeB489HMvbl-8zUarpbAl1PA90p7VdnpCXysUvzvk",
      "hostname": "mrbs.staufer-gymnasium.de",
      "port": "443",
      "addressesResolved": [
        "141.10.70.29"
      ],
      "addressUsed": "141.10.70.29"
    }
  ]
})
root@docker:~#

Kann mir jemand einen Tipp geben?

Vielen Dank schon mal für’s mitdenken,

Mathias

Hallo,

ich hatte teilweise Probleme mit „zu alten“ dehydrated Versionen, allerding verwende ich als Basis für alle meine Hosts debian, da gibts ein Backport Repo, allerdings wirt das einen eindere Fehler.

Welche Version von dehydrated ist installiert? (dpkg -l '*dehydrated*')

VG

Frank

Hallo Frank,

ich hab die Version 0.6.2-2ubuntu0.18.0.
Gruß,
Mathias

Ein dist-upgrade ist gelaufen, das System ist aktuell, ja?

Ja,
apt-get update
apt-get dist-upgrade.

Das deutet auf ein OpenSSL Problem hin. Gibt es die Datei /root/.rnd? Wenn ja, lösch die mal weg und probiers dann nochmal.

/root/.rnd existiert nicht …

Was sagt openssl rand?

Wenn ich als root openssl rand eingebe, kommt keine Ausgabe.

Das ist gut, gibts die Datei /root.rnd jetzt?

Nein, immer noch nicht …

Hmm, das ist komisch, soweit ich das verstehe, müsste das eigentlich angelegt werden. Platten sind nicht voll? Sonst muss ich erst mal drüber schlafen…

Nein die Platten sind zu 10% verwendet…

Fällt mir leider grad nix mehr ein, habe extra noch auf einem bionic Docker Host geschaut, da tuts bei mir?!

Schade…
kann es daran liegen, dass bei der Validierung versucht wird, auf Port 80 zu zugreifen. Aber Port 80 wird auf Port 443 umgeleitet und da gibt es nur ein abgelaufenes Zertifikat?

Das könnte sein. Mach mal die 80 auf.

Halllo Frank,

wie verhindere ich, dass Anfragen auf Port 80 auf Port 443 umgeleitet werden?

Gruß,

Mathias

Hallo Mathias,

Das könnte sein. Mach mal die 80 auf.

wie verhindere ich, dass Anfragen auf Port 80 auf Port 443 umgeleitet
werden?

das wird in der /etc/apache2/sitres-enabled/???
geregelt.
Da hab ich das zumindest drin.

Ich meine, ich hätte das auch mal temporär für ein certbotlauf
rausnehmen müssen.

Ich nehme an, dass du das dort eingetragen hast und dass du dir einen
Vermerk dazu gemacht hast, damit du es nach Jahren wieder erkennst.

LG

Holger

Halllo Holger,

vielen Dank schon mal für deine Antwort.
Wie mach’ ich das? Der Apache läuft ja in einem Docker-Container.

Gruß,
Mathias

Hallo Mathias,

Wie mach’ ich das? Der Apache läuft ja in einem Docker-Container.

echt?
Ein Apache?
Und der sitzt vor allen anderen Maschinen?
… du meinst einen nginx als Reverseproxy, oder?

Beschreib mal dein setup genauer.
Wo steht den der docker?
Wo läuft welcher reverseproxy?
Wo läuft der certbot?

LG

Holger