Windows juhend: Ise allkirjastatud sertifikaatide tegemine, kasutamine ja paigaldamine

From ICO wiki
Revision as of 20:57, 21 October 2012 by Tjaanus (talk | contribs)
Jump to navigationJump to search

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.

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. Nüüdki küsitakse allkirjastamisel võtit, mille eelmises lõigus lõin.

Nüüd on nimega "PowerShell User" sertifikaat kohal "Current User\Personal\Certificates\".

Loome skripti testimiseks

Loome väga lihtsa powershell skripti sisuga Get-Date. 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

JÄTKUB

Kasutatud materjalid