Kako stvoriti samopotpisan certifikat u sustavu Windows

Većina Windows administratora upoznati s temom PKI znaju uslužni program MakeCert.eXE, s kojom možete kreirati potvrdu o vlastitom potpisu. Ovaj je alat uključen u Microsoftov .NET Framework SDK i Microsoft Windows SDK. Windows 8 i Windows Server 2012 imaju ugrađenu sposobnost kreiranja samopotpisanog certifikata pomoću PowerShell 3.0 i novije verzije bez korištenja posebnih alata.

sadržaj:

  • Upotrebom cmdleta New-SelfSignedCertificate za kreiranje certifikata
  • Izradite certifikat o potpisivanju koda za samo potpisivanje

Upotrebom cmdleta New-SelfSignedCertificate za kreiranje certifikata

PowerShell predlaže korištenje cmdleta za kreiranje certifikata koji je potpisao sam novi-SelfSignedCertificate, dio PoSh modula s imenom PKI (Infrastruktura javnog ključa).

Za popis svih dostupnih cmdleta u PKI modulu, pokrenite naredbu:

Get-Command - modul PKI

Preporučuje se da koristite samopotpisane certifikate u svrhu testiranja ili za pružanje certifikata za interne intranet usluge (IIS, Exchange, prob. Web aplikacija, LDAPS, ADRMS, DirectAccess itd.), U slučajevima kada iz nekog razloga kupite certifikat od vanjskog pružatelja usluga ili aktiviranje PKI / CA infrastrukture nemoguće.

vijeće. Ne zaboravite i na mogućnost korištenja punopravnih besplatnih SSL certifikata tvrtke Let's Encrypt. Primjer kako izdati SSL certifikat Let's Šifriraj i veže ga na IIS mjesto.

Da biste stvorili potvrdu, morate navesti vrijednosti -dnsname (Ime DNS poslužitelja, ime može biti proizvoljno i različito od naziva localhost) i -CertStoreLocation (odjeljak lokalne trgovine certifikata u koju će se nalaziti generirani certifikat). Pomoću cmdleta možete kreirati samopotpisani certifikat u Windowsima 10 (u našem primjeru), Windows 8 / 8.1 i Windows Server 2016/2012/2012 R2.

Da biste stvorili potvrdu za DNS ime test.contoso.com i stavili je na popis certifikata osobnog računala, izvršite naredbu:

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

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

Prema zadanim postavkama generira se samopotpisan certifikat sa sljedećim postavkama:

  • Kriptografski algoritam: RSA;
  • Veličina ključa: 2048 malo;
  • Važeće opcije upotrebe ključeva:  Autentifikacija klijenta i Autentifikacija poslužitelja;
  • Certifikat se može koristiti za: Digitalni potpis, Ključno šifriranje ;
  • Valjanost certifikata: 1 godine.

Ova naredba će stvoriti novi certifikat i uvesti ga u pohranu osobnog računala. Snap za otvaranje certlm.MSC, provjerite to u odjeljku osobni pojavio se novi certifikat računalne trgovine.

Kao što vidite, svojstva certifikata ukazuju na to da se ovaj certifikat može koristiti za provjeru autentičnosti klijenta (Autentifikacija klijenta), ali vrijedi i za autentifikaciju poslužitelja (Autentifikacija poslužitelja).

primjedba. Rok valjanosti takve samopotpisane potvrde ograničen je na godinu dana od dana njenog stvaranja. Da biste izdali certifikat za 3 godine, pokrenite sljedeće naredbe:

$ todaydate = Datum-datum
$ add3year = $ todaydate.AddYears (3)
New-SelfSignedCertificate -dnsname test.contoso.com -nota $ add3year -CertStoreLocation cert: \ LocalMachine \ My

Za izvoz primljenog certifikata privatnim ključem u pfx datoteku zaštićenu lozinkom, potreban nam je Thumbprint koji se mora kopirati iz rezultata naredbe New-SelfSignedCertificate:

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

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

Možete izvesti javni ključ potvrde:

Izvoz-certifikat -Cert Cert: \ LocalMachine \ My \ 2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C: \ testcert.cer

Javni ključ ili sama datoteka certifikata može se instalirati na web poslužitelj ili klijente domene pomoću GPO (primjer instaliranja certifikata na PC pomoću grupnih pravila).

Jedna korisna značajka New-SelfSignedCertificate cmdleta je mogućnost stvaranja certifikata s nekoliko različitih imena. predmet alternativa imena (SAN).

primjedba. Ako se stvori certifikat s više imena, ime u parametru DnsName koristit će se kao CN (uobičajeno ime) certifikat.

Na primjer, stvorite potvrdu sa sljedećim imenima:

  • Naziv predmeta (CN): adfs1.contoso.com
  • Alternativno ime predmeta (DNS): web_gw.contoso.com
  • Alternativno ime predmeta (DNS): enterprise_reg.contoso.com

Naredba za stvaranje certifikata bit će sljedeća:

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

Možete izdati i potvrdu za cijeli prostor imena u domeni, za to odredite naziv poslužitelja kao * .contoso.com.

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

Izradite certifikat o potpisivanju koda za samo potpisivanje

U PoweShellu 3.0, cmdlet New-SelfSifgnedCertificate generirao je samo SSL certifikate koji se ne mogu koristiti za potpisivanje upravljačkog i aplikacijskog koda (za razliku od certifikata koje generira MakeCert).

U PowerShellu 5, nova inačica cmdleta New-SelfSifgnedCertificate sada se može koristiti za izdavanje certifikata vrste Signing Signing..

Da biste stvorili samopotpisani certifikat za potpisivanje aplikacijskog koda, pokrenite naredbu:

$ cert = New-SelfSignedCertificate -Subject "Potvrda za potpisivanje koda" -Type CodeSigningCert -CertStoreLocation cert: \ LocalMachine \ My

Pokušajmo potpisati PowerShell skriptu ovim certifikatom:

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

Ako se tijekom izvršavanja naredbe pojavi upozorenje UnknownError, tada je ovaj certifikat nepouzdan, jer nalazi se u osobnoj trgovini korisničkih potvrda.

Morate je premjestiti u korijenske certifikate (ne zaboravite da povremeno provjeravate spremište Windows certifikata o nepovjerenim certifikatima i ažurirate popise korijenskih potvrda):

Move-Item -Path $ cert.PSPath -Odredište "Cert: \ CurrentUser \ Root"

Nakon toga možete potpisati svoju PowerShell skriptu pomoću ovog samopotpisanog certifikata.