Přejít k obsahu webu
21.8.2022 / kaldy123

Certifikáty na Web serveru (IIS)

Některé věci se holt musí zažít. Dlouho jsem certifikáty neřešil, SSL připojení na web servery nebylo tak obvyklé a dlouho na IIS byl možný jediný certifikát, což byl posléze trochu problém, když jste hostovali povícero různých web sites.

Situace se změnila, IIS zavedla Server Name Recognition a certifikát může mít každá site (sajta) svůj…
Pokud jeden není Krésus nebo státní instituce, poohlédne se po nějakém web-certifikátu, který by navíc mohl být zdarma. Ano jsou i takové a docela důvěryhodné, ale vy svoji důvěryhodnost musíte prokazovat dost často – třeba jednou za 3 měsíce a to obnovou certifikátu… takže když co 3 měsíce musíte obnovit několik certifikátů… a web servery máte samozřejmě v několika redundantních instancích, jednoduchý a malý úkol nabývá rozměrů, kdy žere neúměrně času a duševní síly.

Nastává čas, když si pootevřete několik stránek na toto téma a v Poweshell ISE napíšete první řádky….
Dost tedy řečnění a ukažme si takový skriptík… Když to vycizelujete, tak je to opravdu jen pát řádků:

$cred=Get-Credential

$comps='webserver1','webserver2','webserver3'

foreach ($comp in $comps) {
Write-host $comp copy \\tsclient\C\x\mojefirma.cz.pfx "\\$comp\c$\x" -force Invoke-Command -ComputerName $comp -Credential $cred -ScriptBlock { Import-PfxCertificate -FilePath c:\x\mojefirma.cz.pfx -CertStoreLocation cert:\localmachine\my -Password $using:cred.Password Get-ChildItem -Path cert:\localmachine\my|? {$_.Subject -eq 'CN=mojefirma.cz'}|sort -Property NotAfter -Descending|ft Thumbprint,Subject,NotAfter $certificates=Get-ChildItem Cert:\LocalMachine\My|?{$_.Subject -eq 'CN=mojefirma.cz'}|Sort-Object -Property NotAfter -Descending $binding=Get-WebBinding -Name 'mojefirma.cz' -Protocol 'https' $binding.addsslcertificate($certificates[0].Thumbprint,'my') } }

Samozřejmě, v tomto okamžiku máte v úložišti certifikátů (cert:\localmachine\my) minimálně 2 certifikáty: ten nový a ten starý. Ty staré certifikáty mi přijdou jako bezpečnostní riziko (zejména, pokud je jich moc) a osobně si myslím, že na počítači by měly být jen certifikáty potřebné a aktuální. Taže ještě čistidlo:

$comps='webserver1','webserver2','webserver3'

foreach ($comp in $comps) {Write-host $comp
Invoke-Command -ComputerName $comp -Credential $cred -ScriptBlock {

$certificates=Get-ChildItem Cert:\LocalMachine\My|?{$_.Subject -eq 'CN=mojefirma.cz'}|Sort-Object -Property NotAfter -Descending
$iter = $certificates.length
While ($iter -gt 1) {$iter--
                     $thumb =$certificates[$iter].Thumbprint
                     Remove-Item Cert:\LocalMachine\my\$thumb
                    }
Get-ChildItem -Path cert:\localmachine\my|sort -Property NotAfter -Descending|ft Thumbprint,Subject,NotAfter

                                                                  }
                           }

Zanechat odpověď

Vyplňte detaily níže nebo klikněte na ikonu pro přihlášení:

Logo WordPress.com

Komentujete pomocí vašeho WordPress.com účtu. Odhlásit /  Změnit )

Twitter picture

Komentujete pomocí vašeho Twitter účtu. Odhlásit /  Změnit )

Facebook photo

Komentujete pomocí vašeho Facebook účtu. Odhlásit /  Změnit )

Připojování k %s

%d blogerům se to líbí: