Hur du Begär en LetsEncrypt Certifikat med Hjälp av Acme

0
243

LetsEncrypt förändrats SSL-certifikat världen när erbjudandet av gratis, kortlivade, SSL-certifikat får en stor mängd individer och företag att säkra sina webbapplikationer utan kostnad. Med den här tjänsten, den nödvändiga infrastrukturen skulle behöva existera, och en uppsjö av applikationer vuxit upp som passar SSL-utfärdande behov.

En av de vanligaste verktygen är att CertBot, vilket kan fungera bra, men en annan open-source-program som är tillgängliga är acme.sh. Detta är ett helt skal-baserade ACME (det protokoll som används av LetsEncrypt för att utfärda SSL-certifikat) klient. Med en mycket avancerad funktionalitet är inbyggd i denna klient som gör det möjligt för komplexa konfigurationer.

Installera Acme.sh

Det enklaste sättet att installera [acme.sh](<http://acme.sh>) är följande, som hämtar och kör skriptet från här, https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh.

curl <https://get.acme.sh> | sh

Källan för att webbplatsen ligger här, om du skulle vilja att kontrollera vad de själva skriptet gör

Installationen kommer att ladda ner och flytta filer till ~/.acme.sh och installera ett alias till din ~/.bashrc fil. Dessutom, ett cron-jobb kommer att installeras om det finns.

Första Stegen

En hel del av hur du använder [acme.sh](<http://acme.sh>) beror på vilken metod och program som du begär certifikat för. Acme.sh erbjuder många olika metoder för att faktiskt begära ett intyg såsom:

  • Webroot läge
  • Fristående läge
  • Fristående tls-alpn läge
  • Apache läge
  • Nginx läge
  • DNS-läge
  • DNS-alias läge
  • Statslösa läge

I denna artikel kommer jag att visa två olika sätt att begära ett certifikat. Jag är inklusive web server konfigurationer för både NGINX och Apache, som använder Webroot metod. DNS-läge metod använder en konfigurationsfil för att skapa CNAME-poster som används för att verifiera domänen i stället för att skapa en fil på arkiv-system.

Webb-Server Konfiguration

NGINX LetsEncrypt Konfiguration

NGINX gör det enkelt att skapa en gemensam konfiguration för att använda när du använder webroot metod för att begära ett certifikat.

letsencrypt.conf

Det rekommenderas att skapa en fristående konfiguration som kan ingå som behövs i vhost-konfigurationer, så här: include /etc/nginx/letsencrypt.conf

# Regel för legitima ACME Utmaning önskemål (som /.kända/acme-utmaning/xxxxxxxxx)
# Vi använder ^~ här, så att vi inte kontrollera andra reguljära uttryck (för att påskynda). Att vi faktiskt MÅSTE avbryta
# andra regex kontroller, eftersom det i vår andra config-filer har regex regel som blockerar åtkomst till filer med prickade namn.
läge ^~ /.kända/acme-utmaning/ {
# Ställ in rätt typ av innehåll. Enligt detta:
# <https://community.letsencrypt.org/t/using-the-webroot-domain-verification-method/1445/29>
# Specifikation som kräver “text/plain” eller något innehåll huvudet på alla.
# Det verkar som om “text/plain” är ett säkert alternativ.
default_type “text/plain”;
}

# Direkt tillgång returnerar 404
plats = /.kända/acme-utmaning/ {
tillbaka 404;
}

Apache

Mycket som NGINX, Apache kan skapa en separat fil. Ett exempel på detta konfiguration visas nedan.

/etc/apache2/conf-tillgängliga/letsencrypt.conf

I detta fall, Apache-konfiguration är specifika för den virtuella värden på grund av behovet av att inkludera disk läge. Följande är en gemensam plats, men det kan variera beroende på din specifika konfiguration.

Alias /.kända/acme-utmaning/ “/var/www/html/.kända/acme-utmaning/”
<Directory “/var/www/html/”>
AllowOverride None
Alternativ MultiViews Index SymLinksIfOwnerMatch IncludesNoExec
Kräver metoden FÅ INLÄGG ALTERNATIV
</Directory>

DNS-Konfiguration

I denna artikel kommer jag att visa DNS-läge med hjälp av Cloudflare, eftersom den erbjuder extremt snabb DNS-ändringar och fungerar utomordentligt väl med denna metod.

Acme.sh använder två miljövariabler för dns_cf metod: CF_Key och CF_Email. Att ta med detta i din miljö vid start, kan du inkludera denna config inom er .bashrc fil.

Det kan inte vara uppenbart, men det är en föregående utrymme innan varje kommandot exportera, som i allmänhet ser till att de kommer inte att läsas in i historien, bara i fall att.

export CF_Key=”#########…”
export CF_Email=”cfaccount@email.com”

Frågan Intyg via Webroot Metod

Vid utfärdande av följande kommando, två områden är definierade i ett enda certifikat. Detta är att se till att när någon hostname begärs (och ofta omdirigeras till den kanoniska en), begäran kommer fortfarande att vara skyddad av en säker anslutning.

acme.sh –frågan -d example.com -d www.example.com -w /var/www/html

Utfärdade certifikat är i /.acme.sh/acme.sh/{domännamn}

Frågan Intyg via DNS-Metoden

När du använder DNS-utfärdande av metod, en tillfällig txt-posten skapas via Cloudflare API, och LetsEncrypt kontrollerar domänen med hjälp av att tillfälliga post. Detta är en renare metod, som inte webroot konfiguration behövs.

# Flera Domäner
acme.sh –frågan-dns-dns_cf -d example.com -d www.example.com

Utfärdade certifikat är i /.acme.sh/acme.sh/{domännamn}

Förnya Certifikat

Som standard Acme.sh kommer att skapa ett cronjob som följande inlägg:

48 0 * * * “/home/user/.acme.sh/acme.sh” –cron-hem “/home/user/.acme.sh” > /dev/null

Att tvinga en förnyelse, kan du ge följande kommando, som kommer att använda samma utfärdande metod som ursprungligen använts:

acme.sh –förnya -d example.com -d www.example.com

Ta Bort Certifikat

Om du inte längre vill förnya ett certifikat, det är mycket lätt att ta bort. Detta tar inte bort intyg från disk, dock. För att göra det, du kommer att behöva navigera till ~/.acme.sh/ och ta bort den katalog som innehåller certifikat.

acme.sh –remove -d example.com -d www.example.com

Detta gör det möjligt att städa upp i de certifikat som sätts upp för förnyelse, vilket du kan kontrollera genom att lista de certifikat som så:

acme.sh –lista

Slutsats

LetsEncrypt erbjuder en utmärkt och lätt att använda tjänsten för administration av SSL-certifikat för användning på webbplatser. Att skapa en säker webbplats är enklare än någonsin, och med hjälp av den acme.sh kund innebär att du har fullständig kontroll över hur detta sker på din webbserver.

Med ett antal olika metoder för att få ett certifikat, även mycket säkra metoder, såsom en delegerad domän, gör att man kan väl hämta de nödvändiga certifikat.