Optimalizované IT - portál pro IT pro komunitu

Umístění CRL do Azure

Vytisknout E-mail

1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

V rámci jednoho z projektů nasazení PKI jsme nutně potřebovali vysoce dostupné umístění CDP (CRL Distribution Point) založené na HTTP protokolu. U zákazníka však v prostředí nebylo žádné vhodné existující vysoce dostupné řešení a stavět dva nové Windows Servery s rolí Web Server s použitím NLB jen pro umístění malého CRL souboru nám nedávalo úplně smysl. Nakonec nás napadlo zvážit umístění CRL do Azure. Protože jsme věděli, že navíc toto CDP bude využíváno velmi často i externími klienty, ukázalo se to jako velmi dobrá volba. Protože jsem tento scénář na Internetu nenašel nikde popsán, chtěl bych se tímto článkem s Vámi podělit o získanou zkušenost.

Volba vhodné Azure služby

Zvolili jsme službu Azure Web Apps, která umožňuje rychle sestavit, nasadit a spravovat weby a webové aplikace. Konkrétně plán D1 (tzv. Shared), který stojí přibližně 8 EUR za měsíc a umožňuje přidat vlastní doménu, což je pro umístění CRL nutné.

1 Plány Azure Web Apps

Obrázek 1 Srovnání plánů Azure Web Apps

Vytvoření webové aplikace

Po registraci do Azure portálu je potřeba vytvořit novou webovou aplikaci. Ta automaticky dostane přiřazený název ve tvaru název_aplikace. azurewebsites.net. V případě mého testovacího webu se jedná o jméno knotekcrl.azurewebsites.net. Pokud chceme používat pro přístup vlastní doménu, je nutné pro ověření do externí DNS přidat CNAME záznam, který prokazuje, že danou doménu můžeme administrovat. V mém případě se jednalo o záznam crl.knotek.net CNAME knotekcrl.azurewebsites.net. Poté co je záznam zpropagován do externích DNS serverů, je možné projít validačním mechanismem Azure.

2 Ověření názvu hostitele

Obrázek 2 Ověření názvu hostitele

Přístup pro nahrávání obsahu

Jedna z možností, jak nahrávat obsah do webové aplikace, je pomocí FTP. Správcovský účet pro správu Azure ale není z bezpečnostních důvodů možné použít i pro FTP přístup. Je tak nutné vytvořit dedikovaný účet přímo pro FTP přístup. Po jeho vytvoření se nám v sekci „Základní údaje“ objeví přehled všech podstatných přístupových údajů: přihlašovací jméno, URL pro FTP přístup, URL pro FTPS přístup atp.

 

3 Přístupové údaje pro FTP

Obrázek 3 Přístupové údaje pro FTP

Skript pro automatické nahrávání CRL souborů do Azure Web App

Protože CRL je vydáváno běžně 1x týdně a Delta CRL dokonce 1x denně, není možné soubory manuálně kopírovat do Azure Web App, ale je nutné zajistit automatický přenos nově vydaných CRL souborů. Zde jsme společně s kolegyní Olgou Annou Berkovskou zvolili cestu PoweShell skriptu, který je pravidelně spouštěn na certifikační autoritě jako naplánovaná úloha. Níže uvádíme základní kostru skriptu, kterou je možné pro tuto úlohu bez větších úprav použít v libovolném prostředí.

   1: #Declare the folder
   2: $Dir="C:\EnterpriseCA\CRL"
   3: #ftp server
   4: $ftpserver = "ftp://waws-prod-sn1-033.ftp.azurewebsites.windows.net/site/wwwroot/"
   5: $user = "knotekcrl\MirekKnotek_FTP"
   6: $pass = "MegaKrutoPrisneHeslo"
   7: foreach($item in (Get-ChildItem $Dir -Filter "*.crl")){
   8: "Uploading $item..."
   9: #connect to ftp server
  10: $ftp = [System.Net.FtpWebRequest]::Create($ftpserver+$item.Name)
  11: $ftp = [System.Net.FtpWebRequest]$ftp
  12: $ftp.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
  13: $ftp.Credentials = new-object System.Net.NetworkCredential($user,$pass)
  14: $ftp.UseBinary = $true
  15: $ftp.EnableSsl = $true
  16: #$ftp.UsePassive = $false
  17: # read in the file to upload as a byte array
  18: $content = [System.IO.File]::ReadAllBytes($item.FullName)
  19: $ftp.ContentLength = $content.Length
  20: # get the request stream, and write the bytes into it
  21: $rs = $ftp.GetRequestStream()
  22: $rs.Write($content, 0, $content.Length)
  23: # be sure to clean up after ourselves
  24: $rs.Close()
  25: $rs.Dispose()
  26: $ftp.Abort()
  27: $ftp = $null
  28: }

Problém s Delta CRL

Je obecně známý problém, že delta CRL soubor není s výchozím nastavením IIS dostupný pro stažení díky tomu, že název souboru obsahuje znak „+”. Pro jistotu jsem tedy vyzkoušel, zda stejné chování není i v Azure. A výsledek byl, že ani tady nebylo možné delta CRL stáhnout. Na IIS to má snadné řešení, zaškrtneme v nastavení Allow Double Escaping, a je vyřešeno. V Azure jsem ale žádné podobné nastavení nenašel. Nakonec se mi podařilo vše vyřešit vytvořením web.configu s následujícím obsahem

   1: <?xml version="1.0" encoding="UTF-8"?>
   2: <configuration>
   3:     <system.webServer>
   4:         <security>
   5:             <requestFiltering allowDoubleEscaping="true" />
   6:         </security>
   7:     </system.webServer>
   8: </configuration>

Tento web.config je třeba nahrát do kořenu složky wwwroot, restartovat webovou aplikaci a zhruba 10 minut počkat. Po tomto nastavení je z Azure Web App bez problému dostupné i DeltaCRL.

Shrnutí

Azure není vhodný jen v situaci, kdy potřebujeme provozovat velké množství virtuálních strojů. Azure v dnešní době obsahuje velmi bohatou škálu různých služeb a vždy je na místě zvážit, zda neposkytuje vhodnější řešení daného problému. V tomto případě jsme si ověřili, že díky Azure je možné získat, velmi snadno a levně vysoce, dostupné CDP, což je z pohledu nasazení PKI velmi často kriticky důležité.

Miroslav Knotek, KPCS CZ, Tato e-mailová adresa je chráněna před spamboty. Pro její zobrazení musíte mít povolen Javascript.

KPCS CZ, s.r.o. je přední českou firmou specializující se na nasazení, správu a podporu informačních technologií, primárně zaměřenou na produkty společnosti Microsoft. Jako systémový integrátor poskytuje kvalitní podniková řešení na této platformě, která jsou v pravidelných intervalech hodnocena prvními příčkami v soutěžích Microsoft Awards. KPCS CZ disponuje předními odborníky na problematiku veřejného cloudu, tedy služeb Office 365 a Azure, ale i technologií privátního cloudu Windows Server, Hyper-V a produktů rodiny System Center.

O autorovi...
Miroslav Knotek
Author: Miroslav KnotekWebsite: www.kpcs.cz
Senior IT konzultant

Přihlašovací formulář