Ako vytvoriť certifikát s vlastným podpisom v systéme Windows

Väčšina správcov systému Windows, ktorí sú oboznámení s témou PKI, tento nástroj pozná makecert.exe, pomocou ktorého môžete vytvoriť certifikát s vlastným podpisom. Tento nástroj je súčasťou súpravy Microsoft .NET Framework SDK a Microsoft Windows SDK. Windows 8 a Windows Server 2012 majú vstavanú schopnosť vytvárať certifikát s vlastným podpisom pomocou PowerShell 3.0 a vyššej bez použitia špeciálnych pomôcok.

obsah:

  • Použitie Cmdlet New-SelfSignedCertificate na vytvorenie certifikátov
  • Vytvorte certifikát s vlastným podpisom pre podpis kódu na podpisovanie kódu

Použitie Cmdlet New-SelfSignedCertificate na vytvorenie certifikátov

PowerShell navrhuje použitie rutiny cmdlet na vytvorenie certifikátu s vlastným podpisom nový-certifikát podpísaný sám sebou, časť PoSh modulu s názvom PKI (Infraštruktúra verejného kľúča).

Ak chcete zobraziť všetky dostupné cmdlety v module PKI, spustite príkaz:

Get-Command - modul PKI

Odporúča sa používať certifikáty s vlastným podpisom na testovacie účely alebo na poskytovanie certifikátov interným intranetovým službám (IIS, Exchange, Proxy webových aplikácií, LDAPS, ADRMS, DirectAccess, atď.) V prípadoch, keď si z nejakého dôvodu zakúpite certifikát od externého poskytovateľa alebo nasadenie infraštruktúry PKI / CA nemožné.

rada. Nezabudnite tiež na možnosť použitia plnohodnotných bezplatných SSL certifikátov z Let's Encrypt. Príklad toho, ako vydať Let's Encrypt SSL certificate a zviazať ho so serverom IIS.

Ak chcete vytvoriť certifikát, musíte zadať hodnoty -DnsName (Názov servera DNS, názov môže byť ľubovoľný a odlišný od názvu localhost) a -CertStoreLocation (časť miestneho skladu certifikátov, kam sa vygenerovaný certifikát umiestni). Pomocou rutiny cmdlet môžete vytvoriť certifikát s vlastným podpisom v systéme Windows 10 (v našom príklade), Windows 8 / 8.1 a Windows Server 2016/2012/2012 R2.

Ak chcete vytvoriť certifikát pre názov DNS test.contoso.com a umiestniť ho do zoznamu certifikátov osobného počítača, vykonajte príkaz:

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

Adresár: Microsoft.PowerShell.Security \ Certificate :: LocalMachine \ My
Miniatúrny predmet
----------                               -------
2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 CN = test.contoso.com

V predvolenom nastavení sa certifikát s vlastným podpisom generuje s týmito nastaveniami:

  • Kryptografický algoritmus: RSA;
  • Veľkosť kľúča: 2048 trochu;
  • Platné možnosti použitia kľúčov:  Overenie klienta a Autentifikácia servera;
  • Certifikát možno použiť na: Digitálny podpis, Kľúčové šifrovanie ;
  • Platnosť osvedčenia: 1 rok.

Tento príkaz vytvorí nový certifikát a importuje ho do úložiska osobného počítača. Otvára sa snímka certlm.msc, skontrolujte to v časti osobné počítačový certifikát uložiť nový certifikát sa objavil.

Ako vidíte, vlastnosti certifikátu naznačujú, že tento certifikát sa môže použiť na autentifikáciu klienta (Client Authentication), ale je tiež platný na autentifikáciu servera (Server Authentication).

poznámka. Obdobie platnosti takého podpisu s vlastným podpisom je obmedzené na 1 rok od dátumu jeho vytvorenia. Ak chcete vydať certifikát na 3 roky, spustite nasledujúce príkazy:

$ todaydate = Získať dátum
$ add3year = $ todaydate.AddYears (3)
New-SelfSignedCertificate -dnsname test.contoso.com - za $ add3year -CertStoreLocation cert: \ LocalMachine \ My

Na export prijatého certifikátu so súkromným kľúčom do súboru pfx chráneného heslom potrebujeme jeho Thumbprint, ktorý musí byť skopírovaný z výsledkov príkazu New-SelfSignedCertificate:

$ CertPassword = ConvertTo-SecureString -String “YourPassword” -Force -AsPlainText

Exportovať-PfxCertifikát -Cert certifikovať: \ LocalMachine \ My \ 2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C: \ test.pfx -Password $ CertPassword

Môžete exportovať verejný kľúč certifikátu:

Exportný certifikát - Certifikačný certifikát: \ LocalMachine \ My \ 2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C: \ testcert.cer

Výsledný verejný kľúč alebo samotný súbor certifikátu je možné nainštalovať na klientov webového servera alebo domény pomocou GPO (príklad inštalácie certifikátu na PC pomocou skupinových politík).

Jednou z užitočných funkcií rutiny New-SelfSignedCertificate je schopnosť vytvoriť certifikát s niekoľkými rôznymi názvami. predmet alternatívne mená (SAN).

poznámka. Ak sa vytvorí certifikát s viacerými menami, použije sa prvé meno v parametri DnsName ako certifikát CN (Common Name).

Napríklad vytvorte certifikát s nasledujúcimi menami:

  • Názov predmetu (CN): adfs1.contoso.com
  • Alternatívny názov predmetu (DNS): web_gw.contoso.com
  • Alternatívny názov subjektu (DNS): enterprise_reg.contoso.com

Príkaz na vytvorenie certifikátu bude nasledujúci:

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

Môžete tiež vydať certifikát pre celý priestor mien v doméne, na tento účel zadajte názov servera ako * .contoso.com.

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

Vytvorte certifikát s vlastným podpisom pre podpis kódu na podpisovanie kódu

Vo verzii PoweShell 3.0 vygeneroval rutina New-SelfSifgnedCertificate iba certifikáty SSL, ktoré nebolo možné použiť na podpísanie kódu ovládača a aplikácie (na rozdiel od certifikátov vygenerovaných programom MakeCert)..

V PowerShell 5 sa teraz môže na vydávanie certifikátov typu podpisovania kódu použiť nová verzia rutiny New-SelfSifgnedCertificate..

Ak chcete vytvoriť certifikát s vlastným podpisom na podpisovanie kódu aplikácie, spustite príkaz:

$ cert = New-SelfSignedCertificate -Subject "Cert for Signing Code" --Type CodeSigningCert -CertStoreLocation cert: \ LocalMachine \ My

Skúsme podpísať skript PowerShell pomocou tohto certifikátu:

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

Ak sa počas vykonávania príkazu zobrazí upozornenie UnknownError, tento certifikát je nedôveryhodný, pretože je v osobnom sklade užívateľských certifikátov.

Musíte ho presunúť do koreňových certifikátov (nezabudnite pravidelne skontrolovať nedôveryhodné certifikáty v úložisku certifikátov Windows a aktualizovať zoznamy koreňových certifikátov):

Move-Item -Path $ cert.PSPath -Destination "Cert: \ CurrentUser \ Root"

Potom môžete pomocou tohto certifikátu s vlastným podpisom podpísať váš skript PowerShell.