Windows juhend: Ise allkirjastatud sertifikaatide tegemine, kasutamine ja paigaldamine
Autor
- Nimi : Tauri Jaanus
- Rühm : AK21
- Kuupäev :21.10.2012
Sissejuhatus
Selles juhendis saab juttu olema Windows SDK makecert.exe tööriistast. Täpsemalt siis Windows SDK 7.1 versioonist, edasipidi SDK, mille installeerija saab allalaadida http://www.microsoft.com/en-us/download/details.aspx?id=8279. Kuidas valmistada sellega ise allkirjastatud (self-signed) sertifikaati, kuidas see sertifikaat paigaldada windows 7 peal ja kuidas kasutada seda sertifikaati PowerShelli skriptide allkirjastamiseks. Selline näide seetõttu, kuna PowerShell skripte, mis ei ole allkirjastatud, ei saa jooksutada, kui muidugi see piirang maha võtta.
Tehnilised nõuded Windows SDK 7.1 paigaldamiseks
Toetatud operatsiooni süsteemid: Windows 7, Windows Server 2003 R2 Standard Edition (32-bit x86), Windows Server 2003 R2 Standard x64 Edition , Windows Server 2008, Windows Server 2008 R2, Windows Vista, Windows XP Service Pack 3
Tööriista paigaldamine
SDK installer tuleb siis ülal antud lingi pealt alla tõmmata ja üldjuhul kõik valikud võib jätta samaks mida pakutakse, kuid sel juhul paigaldakse suures mahus (1,5GB) asju mida te tõenäoliselt ei vaja. Seega oleks mõtekas paigaldada ainult tööristad, ehk paigaldamisel teha valik selliselt.
Sellisel juhul läheb ruumi vaid 207MB, kuigi makecert ise on veel väiksem.
MAKECERT.EXE
Kõige pealt avame cmd.exe liigume käsuga "cd C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin" õigele teekonnale ning sealt saame käivitada makecert käsu. Mis annab tulemuseks makecert tööriista lihtsamad võtmed.
Andes käsu "makecert -!", saame tulemuseks laiendatud valiku võtmeid.
Vajalike võtmete kirjeldused:
- -n : Sertifikaadi subjekti nimi, arvuti puhul täielik FQDN nimi.
- -a : krüpteerimis algoritm valikuteks: md5, sha1, sha256, sha384, sha512. Vaike väärtuseks on sha1.
- -eku : tõhustatud võtmekasutus objekti id.
- -r : valmista ise allkirjastatud (self-signed) sertifikaat.
- -sv : subjekti privaatvõtme faili nimi (.pvk); Kui sellist ei leita siis luuakse.
- -sr : subjekti sertifikaadi ladustamis koht.
- -ss : subjekti sertifikaadi ladustamis koha nimi, mis väljutatava sertifikaadi ladustab.
- -pe : muudab genereeritava privaatvõtme eksporditavaks.
- -iv : allkirjastaja privaatvõtme fail (.pvk).
- -ic : allkirjastaja sertifikaadi fail (.cer;.crt).
- -b : sertifikaadi kehtivusaja algus kk/pp/aaaa.
- -e : sertifikaadi kehtivusaja lõpp kk/pp/aaaa.
Loome juur sertifikaadi
Loome juur sertifikaadi PowerShelli skriptide allkirjastamiseks järgneva käsuga. "makecert -n "CN=PowerShell Local Certificate Root" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr localMachine" . Antud käsus määrasime subjekti nime, andsime sha1 krüpteeringu, võtme objekti id, tehakse ise allkirjastatud sertifikaat, privaatvõtme nime koos sertifikaadi nimega, ladustamis koha ja ladustamis koha nime. Kuna minul seda privaatvõtit polnud veel, siis palutakse mul sisestada selle võtme väärtus kaks korda. Peale seda veel korra sama võti, et antud käsk lõpetada.
Vaadates mmc.exe snap-in "Certificate" ja valides "Computer account". Nüüd on nimega "PowerShell Local Certificate Root" sertifikaat kohas "Local Mashine\Trusted Root Certification Authorities\Certificates\".
Loome sertifikaadi
Loome ise allkirjastatud sertifikaadi käsuga "makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer". Antud käsus määrasime, et privaatvõti on eksporditav, subjekti nime, ladustamis koha nime MY - ehk kasutusel olev kasutaja konto, krüpteeringu, võtme objekti id, allkirjastaja privaatvõtme ja allkirjastaja sertifikaadi. Kui lisada lõppu "C:\cert.cer" tekkib sertifikaat sellele teekonnale. Nüüdki küsitakse allkirjastamisel võtit, mille eelmises lõigus lõin.
Vaadates mmc.exe snap-in "Certificate" ja valides "My user account". Nüüd on nimega "PowerShell User" sertifikaat kohal "Current User\Personal\Certificates\". Lisaks on vaja see sertifikaat kopeerida sealt kohta "Current User\Trusted Publishers\Certificates\"
Loome skripti testimiseks
Loome väga lihtsa PowerShell skripti sisuga Get-Date, mis annab meile hetke aja. Selleks käivitame PowerShelli ja kui see on tekkinud tegumi ribale siis parema hiire nupuga teeme vajutuse sellel ja valime "Windows PowerShell ISE". Avanevas aknas jooksutama esmalt sellise käsu "chcp 65001". See muudab kodeeringu utf-8 peale ja kui me seda ei tee, siis ei õnnestu ka allkirjastamine. Teeme uue lihtsa skripti "Get-Date" ja salvestame selle otse C: peale, tulemuseks C:\Date.ps1.
Kui käivitame skripti, saame tulemuseks vea.
Allkirjastame skripti
Allkirjastamiseks kasutame PowerShelli ennast. Kasutame selleks sellist skripti "Set-AuthenticodeSignature C:\Date.ps1 @(Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert)[0]". Tulemuseks peaks tulema selline pilt. Kui tuleb Status midagi muud siis on tõenäosus, et probleemiks on skripti vale kodeering.
Skripti test
Testime skripti selleks käivitan PowerShelli administraator kasutajana. Kuna vaikimisi peavad kõik skriptid olema allkirjastatud ja usaldatud, siis ise allkirjastatud skriptide lubamiseks peame me muutma käivitus poliisi. Käsuga "Set-ExecutionPolicy -ExecutionPolicy AllSigned" ning vastame jah (Y).
Käivitame skripti käsuga "C:\Date.ps1"
Nüüd näidatakse mulle kella aega. Järelikult kõik toimis. Kui saate vea või küsimuse, siis on kusagil midagi tegemata jäänud.
Kasutatud materjalid
- http://www.microsoft.com/en-us/download/details.aspx?id=8279
- http://ralf.schaeftlein.de/2012/02/17/howto-run-self-signed-powershell-scripts/
- http://lingpipe-blog.com/2010/07/06/unicode-shell-for-java-windows-powershell-ise/
- http://www.howtogeek.com/106273/how-to-allow-the-execution-of-powershell-scripts-on-windows-7/