Kako ustvariti samopodpisano potrdilo v operacijskem sistemu Windows

Večina skrbnikov sistema Windows, ki poznajo temo PKI, pozna uporabnost Makecert.exe, s katerim lahko ustvarite potrdilo s samopodpisom. Ta pripomoček je priložen Microsoftu .NET Framework SDK in Microsoft Windows SDK. Windows 8 in Windows Server 2012 imata vgrajeno zmožnost ustvarjanja samopodpisanega potrdila s programom PowerShell 3.0 ali novejšim brez uporabe posebnih pripomočkov.

Vsebina:

  • S pomočjo Cmdlet New-SelfSignedCertificate ustvarite certifikate
  • Ustvari samopodpisano potrdilo o podpisu kode za podpisovanje kode

S pomočjo Cmdlet New-SelfSignedCertificate ustvarite certifikate

PowerShell predlaga, da uporabite ukazni ukaz, da ustvarite certifikat s lastnim podpisom Novo-SelfSignedCertificate, del modula PoSh z imenom PKI (Infrastruktura javnega ključa).

Če želite prikazati vse razpoložljive cmdlete v modulu PKI, zaženite ukaz:

Get-Command -Module PKI

Priporočljivo je, da za testiranje uporabljate samopodpisane certifikate ali za zagotovitev certifikatov za interne intranetne storitve (IIS, Exchange, spletni aplikacijski proxy, LDAPS, ADRMS, DirectAccess itd.) V primerih, ko iz nekega razloga kupite potrdilo pri zunanjem ponudniku oz. uvedba infrastrukture PKI / CA nemogoča.

Namig. Ne pozabite tudi na možnost uporabe polnopravnih brezplačnih SSL certifikatov podjetja Let's Encrypt. Primer, kako izdati potrdilo Let's Šifriraj SSL in ga privežite na spletno mesto IIS.

Če želite ustvariti potrdilo, morate določiti vrednosti -Ime imena (Ime strežnika DNS, ime je lahko poljubno in se razlikuje od imena lokalnega gostitelja) in -CertStoreLocation (oddelek lokalne shrambe certifikatov, kamor bo postavljeno ustvarjeno potrdilo). Z ukaznim ukazom lahko ustvarite samopodpisano potrdilo v sistemih Windows 10 (v našem primeru), Windows 8 / 8.1 in Windows Server 2016/2012/2012 R2.

Če želite ustvariti potrdilo za ime DNS test.contoso.com in ga umestiti na seznam potrdil za osebni računalnik, izvedite ukaz:

New-SelfSignedCertificate -DnsName test.contoso.com -CertStoreLocation cert: \ LocalMachine \ My

Imenik: Microsoft.PowerShell.Security \ Certificate :: LocalMachine \ My
Predmet palca
----------                               -------
2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 CN = test.contoso.com

Privzeto se ustvari samopodpisano potrdilo z naslednjimi nastavitvami:

  • Kriptografski algoritem: RSA;
  • Velikost ključa: 2048 malo;
  • Veljavne možnosti uporabe ključev:  Preverjanje identitete stranke in Preverjanje pristnosti strežnika;
  • Certifikat se lahko uporablja za: Digitalni podpis, Ključna šifriranje ;
  • Veljavnost potrdila: 1 leto.

Ta ukaz bo ustvaril novo potrdilo in ga uvozil v shrambo osebnega računalnika. Snap odpiranja certlm.msc, preverite to v razdelku Osebno se je pojavilo novo potrdilo računalniške trgovine.

Kot lahko vidite, lastnosti potrdila kažejo, da se to potrdilo lahko uporablja za preverjanje pristnosti odjemalca (preverjanje pristnosti odjemalca), velja pa tudi za overjanje strežnika (overjanje strežnika).

Opomba. Obdobje veljavnosti takega samopodpisanega potrdila je omejeno na eno leto od datuma nastanka. Če želite izdati potrdilo za tri leta, zaženite naslednje ukaze:

$ todaydate = Datum pridobitve
$ add3year = $ todaydate.AddYears (3)
Novo-SelfSignedCertificate -naimenovanje test.contoso.com -nota $ add3year -CertStoreLocation cert: \ LocalMachine \ My

Za izvoz izvoznega potrdila z zasebnim ključem v pfx datoteko, zaščiteno z geslom, potrebujemo njegov Thumbprint, ki ga je treba kopirati iz rezultatov ukaza New-SelfSignedCertificate:

$ CertPassword = PretvoriTo-SecureString -String "YourPassword" -Force -AsPlainText

Export-PfxCertificate -Cert cert: \ LocalMachine \ My \ 2779C0490D558B31AAAACEC2F6EB1A5C2CA83B30 -FilePath C: \ test.pfx -Password $ CertPassword

Javni ključ potrdila lahko izvozite:

Potrdilo o izvozu -Cert Cert: \ LocalMachine \ My \ 2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C: \ testcert.cer

Nastali javni ključ ali datoteko s potrdilom lahko namestite na spletni strežnik ali odjemalce domene z uporabo GPO (primer namestitve potrdila na osebni računalnik z uporabo skupinskih pravilnikov).

Ena uporabna lastnost cmdleta New-SelfSignedCertificate je zmožnost ustvarjanja potrdila z več različnimi imeni. Predmet Alternativa Imena (SAN).

Opomba. Če je ustvarjeno potrdilo z več imeni, bo prvo ime v parametru DnsName uporabljeno kot potrdilo CN (skupno ime).

Na primer, ustvarite potrdilo z naslednjimi imeni:

  • Predmet (CN): adfs1.contoso.com
  • Nadomestno ime predmeta (DNS): web_gw.contoso.com
  • Nadomestno ime predmeta (DNS): enterprise_reg.contoso.com

Ukaz za izdelavo potrdila bo naslednji:

New-SelfSignedCertificate -DnsName adfs1.contoso.com, web_gw.contoso.com, enterprise_reg.contoso.com -CertStoreLocation cert: \ LocalMachine \ My

Prav tako lahko izdate potrdilo za celoten imenski prostor v domeni, za to podajte ime strežnika kot * .contoso.com.

New-SelfSignedCertificate -certstorelocation cert: \ localmachine \ my-ime-imena * .contoso.com

Ustvari samopodpisano potrdilo o podpisu kode za podpisovanje kode

V PoweShell 3.0 je cmdlet New-SelfSifgnedCertificate ustvaril samo potrdila SSL, ki jih ni bilo mogoče uporabiti za podpisovanje gonilniške in aplikacijske kode (v nasprotju s certifikati, ki jih je ustvaril MakeCert).

V programu PowerShell 5 lahko zdaj za izdajo potrdil o tipu Code Signing uporabljate novo različico ukaznega okna New-SelfSifgnedCertificate..

Če želite ustvariti samopodpisano potrdilo za podpisovanje kode aplikacije, zaženite ukaz:

$ cert = New-SelfSignedCertificate -Subject "Cert za podpisovanje kode" -Type CodeSigningCert -CertStoreLocation cert: \ LocalMachine \ My

Poskusimo podpisati skript PowerShell s tem potrdilom:

Set-AuthenticodeSignature -FilePath C: \ PS \ test_script.ps1 -Sertifikat $ cert

Če se med izvajanjem ukaza pojavi opozorilo UnknownError, potem to potrdilo ni zaupano, ker je v osebni trgovini uporabniških potrdil.

Premakniti ga morate v korenska potrdila (ne pozabite občasno preveriti, ali je v skladišču potrdil Windows nezaupljiva potrdila in posodobite sezname korenskih potrdil):

Move-Item-Pot $ cert.PSPath -Odreditev "Cert: \ CurrentUser \ Root"

Po tem lahko svojo skript PowerShell podpišete s tem samopodpisanim potrdilom.