Windows juhend: Ise allkirjastatud sertifikaatide tegemine, kasutamine ja paigaldamine

From ICO wiki

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ööriistad, ehk paigaldamisel teha valik selliselt.

Sdk.jpg

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.

Makecert1.jpg

Andes käsu "makecert -!", saame tulemuseks laiendatud valiku võtmeid.

Makecert2.jpg

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 ladustamiskoha 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.

Makecert3.jpg

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, ladustamiskoha 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.

Makecert4.jpg

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.

Getdate1.jpg


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.

Getdate2.jpg

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äivituspoliisi. Käsuga "Set-ExecutionPolicy -ExecutionPolicy AllSigned" ning vastame jah (Y).

Pshell1.jpg

Käivitame skripti käsuga "C:\Date.ps1"

Nüüd näidatakse mulle kellaaega. Järelikult kõik toimis. Kui saate vea või küsimuse, siis on kusagil midagi tegemata jäänud.

Pshell2.jpg


Kasutatud materjalid