ACME/Certbot for å "samle inn og hoste" sertifikater
Heisann,
Jeg har noen spørsmål rundt ACME/certbot – GO SSL.
Vi har en del servere som er eksponert mot internett, og relativt mange som ikke er det, og noen fant ut at det å sette opp en certbot-server for å håndtere sertifikater som skal skiftes ut ofte var en god idé.
Nå har jeg sett litt på dokumentasjonen og for meg ser det ut som følger;
Man installerer certbot på en webserver (i mitt tilfelle tester jeg på en Ubuntu 20.04.2 server med nginx), og så kjører man en kommando for å laste ned et sertifikat, enten til en webroot, direkte inn i nginx, eller –standalone for å laste ned til .
certbot register –m 'epost@somedomain.com’ –agree-tos –server ‘https://api.buypass.no/acme/directory’
certbot –nginx –d acme.somedomain.com -d acme.someotherdomain.com –server ‘ https://api.buypass.no/acme/directory’
certbot certonly –webroot –w /var/www/somedomain.com/acme –d acme.somedomain.com -d acme.someotherdomain.com –server ‘ https://api.buypass.no/acme/directory’
Disse kommandoene vil jeg tro skal fungere når DNS-oppslaget mot acme.somedomain.com og acme.someotherdomain.com peker mot certbot-serveren, men så er det det egentlige spørsmålet mitt kommer.
Hvis jeg ønsker å sentralisere nedlastningen av sertifikater for andre tjenester i somedomain.com eller someotherdomain.com på denne samme certbot-serveren så antar jeg at acme-serveren deres må kunne gjøre en http-01 challenge (eller en annen type) mot serveren, og at følgelig må DNS oppføringen for alle tjenester jeg ønsker å hente ned til peke mot samme adresse?
Dersom jeg så har en tjeneste som jeg ønsker å eksponere mot internett, la oss si
https://nywebserver.somedomain.com eller https://annenwebserver.someotherdomain.com, så vil det vel ikke være mulig å laste ned sertifikatene til certbot-maskinen? Eller er det mulig at alle somedomain.com, someotherdomain.com osv. blir håndtert av samme certbot agent? Må det da i så fall ligge en A-record på somedomain.com eller someotherdomain.com osv. som peker mot serveren i DNS?
Beklager å grave og mase uten egentlig å ha lest meg opp så voldsomt, men hadde vært greit å få gjort noen avklaringer før jeg bruker for mye tid på dette.
-
Tror du er på utkikk etter en generell beskrivelse av løsningsarkitektur og generll ACME-bruk. Dette er ikke en fullstendig beskrivelse og er basert på en mange antagelser.
Tror du trenger å sette opp en helhetlig akritekturbilde av din løsning for å få et ordentlig bilde av problemstillingen. Men under er det en del kjappe svar.For DNS challenge, benytt oversikten her for eksempelbruk https://community.buypass.com/t/36jtyc/certbot-basic-usage. Dette er et manuelt eksempel på DNS-01 challenge og du må finne et mer konkret eksempel relatert til din DNS-supplier for automatisering av dette helt ut med DNS-01.
Hvis du bruker en lastbalanserer eller reverse proxy i frontend for å terminere HTTPS kan du bestemme om du ønsker HTTPS mellom frontend og backend. Da trenger du kun hente gyldige sertifikater på frontend/lastbalanserer.
Løsningen, kommer helt an på din implementasjon av forholdet mellom fronted og backend i ditt design.
DNS-01 kan benyttes på backendservere for å oppnå sertifikater hvis de har internettaksess. Challengen er validert mot public DNS records og ikke serveren, deretter henter den sertifikater når DNS challengen er validert.
HTTP-01 (nginx, apache, webroot) trenger å verifisere at man har lagt challengen lokalt på serveren som er pekt på av DNS-navnet du gjør en request for. Vi følger redirects så hvis FQDN redirectes til en backend server gjennom lastbalanserer / reverse proxy skal du kunne motta sertifikat.
Et topologi eksempel er at du terminerer "https://app.example.com " i frontend med et cert per applikasjon.Frontend sender requesten videre med HTTPS til backend hvor applikasjonen hostes eg. vba context paths på "https://server.example.com:port/context-path"