Let‘s Encrypt a vaše weby

Šifrovaná komunikace s webovými stránkami je dnes již poměrně rozšířená. Google ve svém algoritmu pro řazení stránek zvýhodňuje ty, které povolují zabezpečené připojení. Přihlašování a komunikace s bankami, s e-mailem a podobnými službami jsou šifrované, ale co ostatní webové stránky, jako váš e-shop, firemní stránka a podobně? Získejte a nasaďte SSL certifikát jednoduše a zdarma díky službě Let‘s Encrypt a Microsoft Azure!

Zpátky do minulosti, aneb jak získat SSL certifikát před rokem 20161?

Proces získávání SSL certifikátu byl historicky poměrně složitý a zdlouhavý. Pokud jste chtěli certifikát zdarma, mohli jste využít služby jako např. StartSSL, u které však bohužel docházelo k častým problémům se samotným vydáváním certifikátů, v opačném případě vás čekala poměrně nemalá investice do certifikátu samotného. Následovalo ověření identity a všelijakých osobních informací, v některých případech i poměrně absurdní ověření fyzické adresy.

Zjednodušit celý tento proces se pokusila komunita CAcert.org, bohužel však bylo vždy nutné nainstalovat manuálně jejich kořenový certifikát.

V nedávné době také služba CloudFlare přinesla tzv. univerzální SSL, což umožnilo mnoha milionům webů využívat zdarma SSL bez nutnosti jakýchkoliv změn, nicméně pokud jste nechtěli využívat CloudFlare jako prostředníka nebo jste potřebovali například větší limity pro upload, museli jste si vystačit sami.

Držte se, přichází Let‘s Encrypt

Let‘s Encrypt je nová internetová certifikační autorita, která je podporovaná velkými a známými internetovými společnostmi, jako jsou Electronic Frontier Foundation (EFF), Mozilla, Google Chrome a mnoho dalších. Let‘s Encrypt řeší problematiku žádosti, validace, podepsání, instalace a dokonce i obnovení certifikátu, a je kompletně open source, postavený na otevřeném standardu ACME (Automated Certificate Management Environment). Samotný protokol ACME je jednoduchý na pochopení a velmi dobře zdokumentovaný. Certifikát je vždy vydaný s platností 90 dní (což zvyšuje bezpečnost) a typicky se automaticky obnoví 30 dní před koncem platnosti – kdyby došlo k nějakým problémům, tak aby bylo možné je řešit včas.

Používáme Let‘s Encrypt

Pokud je váš web hostovaný na již podporované platformě (např. Apache na systému, který je založený na Debianu), můžete službu začít využívat velmi jednoduše:

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --apache -d example.com -d www.vasweb.cz

Takto jednoduše si můžete vygenerovat certifikát pro váš web (samozřejmě existuje i spousta složitějších scénářů, pro které můžete využít dokumentaci) a začít ho ihned používat – a nemusíte vůbec řešit jeho obnovu, Let’s Encrypt dělá vše za vás.

Let‘s Encrypt a IIS

Nahoře jsem uvedl, že je Let‘s Encrypt založený na otevřeném protokolu ACME, a jelikož zatím neexistuje oficiální podpora pro IIS a Windows, v komunitě vznikl ACMESharp – knihovna pro .NET a PowerShell klient. A pokud nemáte rádi PowerShell, můžete využít zjednodušeného klienta (postaveného na ACMESharp), který je velmi jednoduchý a využívá staré dobré příkazové řádky – letsencrypt-win-simple.

Tady samozřejmě vývoj neskončil a vznikl dokonce i grafický klient Certify.

Prostředí grafického klienta Certify

Prostředí grafického klienta Certify

Díky těmto možnostem si můžete sami vybrat nástroj, pomocí něhož budete SSL certifikáty od Let’s Encrypt získávat.

Let‘s Encrypt a Azure

Pokud však vlastní server nemáte a využíváte cloudového hostingu – Azure Web Apps od Microsoftu, nemusíte zoufat, přesně pro vás je jeden z mnoha dostupných doplňků – Azure Let‘s Encrypt. Doplněk v současné době ještě není dostupný v novém portále Azure, a proto je nutné ho instalovat skrze SCM web (pokud jste se ještě nikdy se SCM webem nesetkali, můžete se podívat na krátké intro).

Samotná instalace a nastavení vám chvilku zabere, ale poté máte možnost vytvářet certifikáty velmi jednoduše a rychle. Na potřebné kroky se nyní společně podíváme:

Založení Azure Web App

Pokud ještě nemáte Web App v Azure založený, můžete ho jednoduše vytvořit – podívejte se na následující video:

Nezbytné požadavky

Podporovaný App Service plán

Jelikož budete využívat vlastní domény a SSL připojení, je nutné využívat podporovaný plán (minimálně S1 ze skupiny Standard, jelikož podporuje SSL na vlastních doménách).

Výběr hostingového plánu pro App Service

Výběr hostingového plánu pro App Service

Vlastní doména

Doména musí být přiřazená ke stránce, kterou plánujete využívat s vlastním certifikátem – pro přiřazení můžete využít tohoto návodu.

Storage Account

Abyste mohli využívat funkce, jako je automatické obnovení certifikátů, je nutné, abyste měli vytvořený Storage Account, do kterého bude aplikace na pozadí ukládat persistentní data. Návod na vytvoření najdete zde. Následně je potřeba, abyste uložili Connection String do nastavení aplikace jako AzureWebJobsStorage a AzureWebJobsDashboard.

Instalace doplňku

Otevřete prostředí SCM vašeho webu – https://vasweb.scm.azurewebsites.net a přejděte do Site extensions. V galerii všech doplňků vyhledejte Azure Let‘s Encrypt. Následně nainstalujte verzi doplňku, která vám vyhovuje (pokud si nejste jistí, zvolte x86 verzi).

Instalace doplňku z prostředí SCM – Kudu

Instalace doplňku z prostředí SCM – Kudu

Jakmile je instalace doplňku hotová, je nutné restartovat web. Po instalaci přejděte do prostředí pro instalaci a konfiguraci Azure Let‘s Encrypt (buď tak, že kliknete na tlačítko „play“, nebo přímo na adresu https://vasweb.scm.azurewebsites.net/letsencrypt).

Instalace a konfigurace doplňku Azure Let’s Encrypt

Instalace a konfigurace doplňku Azure Let’s Encrypt

Registrace Service Principalu

Aby instalace mohla proběhnout automaticky, je potřeba vytvořit v Azure tzv. Service Principal. Podrobný návod najdete zde, pro ukázku uvedu jenom sérii příkazů v PowerShellu (budete potřebovat nainstalovaný Azure PowerShell).

Login-AzureRmAccount
$uri = 'https://adresa vaší aplikace‘
$password = 'nějaké silné a náhodné heslo'
$app = New-AzureRmADApplication -DisplayName ‘název aplikace’ -HomePage $uri -IdentifierUris $uri -Password $password
New-AzureRmADServicePrincipal -ApplicationId $app.ApplicationId
New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $app.ApplicationId

Díky těmto krokům dojde k vytvoření vašeho Service Principalu – uložte si $app.ApplicationId (ClientId) a $password (ClientSecret), jelikož jsou potřeba v průběhu instalace doplňku.

Nastavení aplikace

S vytvořeným Service Principalem máte již vše, co potřebujete, abyste mohli dokončit instalaci Let‘s Encrypt doplňku pro Azure Web Apps.

  • Tenant – Název vašeho tenantu v Azure, typicky castmailu.onmicrosoft.com.
  • SubscriptionId – ID vašeho předplatného Azure – je možné zjistit například z Azure Portálu v detailech vaší Web app.
  • ClientId – ID klienta, které jste získali při registraci Service Principalu.
  • ClientSecret – Tajemství, které jste vytvořili při registrace Service Principalu.
  • ResourceGroupName – Název skupiny prostředků, ve které se nachází váš web.
  • ServicePlanResourceGroupName – Pokud je webhostingový plán a webová aplikace ve stejné skupině prostředků, můžete nechat prázdné.

Poté zaškrtněte Update Application Settings – dojde k uložení těchto údajů do proměnných aplikace – a pokračujte kliknutím na Next.

Na pozadí dojde k vytvoření automatického Web Jobu, který se stará o automatickou obnovu expirujících certifikátů. Pokud instalace proběhne úspěšně, dostanete se na obrazovku, kde uvidíte veškeré domény spjaté s danou webovou aplikací.

Seznam domén, které jsou přiřazené k webové aplikaci

Seznam domén, které jsou přiřazené k webové aplikaci

Pokračujte kliknutím na Next.

Nyní jste na stránce, kde se generují samotné certifikáty. Vyberte ze seznamu hostname, pro které chcete certifikát vygenerovat a zadejte vaši e-mailovou adresu. Pokud se jedná pouze o testovací certifikát, můžete využít tzv. Staging, což v praxi znamená, že dostanete certifikát, který je podepsaný pouze Let‘s Encrypt certifikační autoritou, a tudíž není automaticky důvěryhodný. Poté stačí pouze potvrdit vytvoření certifikátu pomocí tlačítka Request and Install certificate.

Ověření funkcionality

Abyste Abyste ověřili, že vše proběhlo správně a funguje, začněte tím, že otevřete váš web na vlastní doméně ve vašem prohlížeči a zkontrolujete certifikát, kterým se prokazuje váš web.

Vygenerovaný certifikát od Let‘s Encrypt.

Vygenerovaný certifikát od Let‘s Encrypt.

Také je potřeba ověřit to, zda došlo ke správnému vytvoření automatického Web Jobu, a že funguje, tudíž přejděte na stránku s jeho konfigurací – buď z Azure Portálu, detailu Web App a sekce Web Jobs, nebo přímo z konfigurace Let‘s Encrypt – v záhlaví stránky je odkaz Web Jobs. Na této stránce uvidíte, kdy například došlo k poslednímu obnovení certifikátu nebo pokud nastaly nějaké problémy.

Přehled Web Jobů

Přehled Web Jobů

Závěrem

Nesmírnou výhodou služby Let‘s Encrypt je to, že můžete velmi jednoduše, rychle a hlavně bezplatně získat SSL certifikáty. Díky této integraci do Microsoft Azure je celý proces velmi jednoduchý a rychlý. Každopádně je nutné zmínit, že doplněk Azure Let‘s Encrypt je stále ve vývoji a není doporučené ho využívat v produkčním prostředí. Doplněk je k dispozici jako open source na GitHubu, takže se i vy můžete zapojit do jeho vývoje.

Jan Hájek, TheNetw.org

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Zdroj: https://www.zdrojak.cz/?p=17486