Přejít k obsahu webu
16.9.2021 / kaldy123

netsh http sslcert

Netshelový příkaz k práci s SSL certifikáty služby inetsrv, neboli IIS serveru. Když jsem si uvědomil, že (všechnu?) komunikaci http protokolu zajišťuje IIS server – nebo alespoň jeho jádro, došla mi spousta důsledků. Tímto příkazem se dají totiž nastavit certifikáty pro další služby běžící na SSL. V tomto příspěvku ukáži některé z nich.
Tento netshell příkaz lze – jako jiné řádkové příkazy – používat ve vzdálené powershell session (PS relaci), takže je imořádně vhodný pro nastavení SSL bindů na core serverech!

HTTPS bind pro IIS web server.

Celý postup je totožný s postupem uvedeným v článku Jak naimportovat SSL certifikát pro Windows Admin Center s tím rozdílem, že neinstalujeme certifikát pro WADMIN server, ale pro IIS web server. Stačí, když si vypíšete SSL bindy, nahlédnete, že přes remote PowerShel Session je řešení elegantní a přímočaré. (Žádné prohrabávání se ve vlastnosti jednotlivých sajt (sites)!
Poznámka navíc: mezi SSL bindy naleznete též výpis:

    IP:port                      : 0.0.0.0:8172
    Certificate Hash             : 9741c551e559196bd4f33e0f94774dcf2522a95a
    Application ID               : {00000000-0000-0000-0000-000000000000}
	.
	.
	.
    Max Settings Per Minute      : 4294967295

Zastříhejte ušmama – co je to za port?! No přeci ISS management! A to je taky jediný způsob, jaxi nastavit certifikát pro tuto službu – abyste nemuseli řešit nějaký podezřelý self-signed certifikát, zejména při práci s inetmgr.exe na vzdáleném počítači!
A to doopravdy dělá to samé, co GUI? Ne tak docela. Jeden rozdíl jsem našel:

SSL Certificate bindings:
-------------------------
    IP:port                      : 0.0.0.0:443
    Certificate Hash             : cc8780b99c37b92de87daaf3534b82bcb36eac78
    Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
    Certificate Store Name       : (null)
    Verify Client Certificate Revocation : Enabled
       .
       .
       .

U vlastnosti Certificate Store Name je hodnota (null), zatímco pokud instalujete certifikát přes GUI, hodnota je MY. (Jasně: z cesty cert:\localmachine\MY). Ve vlastnostech serveru při připojení přes browser jsem nezaznamenal rozdíl… Je pravdou, že v příkazu netsh http add sslcert …. jsem zadal pouze otisk (thumbprint) certifikátu z cert:\localmachine\MY bez uvedení cesty. Ale nejsem si ani jist, zda příkaz nějaký parametr typu certpath obsahuje….

Nastavení certifikátu pro Remote Desktop Gateway

Toto řešení jsem hledal již delší dobu, neb na RDG používám veřejné certifikáty firmy Digicert. Jejich drobnou nevýhodou je, že mají životnost 3 měsíce. Tudíž alespoň drobná úleva ve formě skriptu je vítaná.
SSL připojení RDG je ralizováno opět službou inetsrv, takže postup je opět stejný, jako v článku Jak naimportovat SSL certifikát pro Windows Admin Center. Při výpisů SSL bindů byste měli mít právě jeden – a tak je situace jednodušší!
Rozdíly oproti použití GUI: pokud si vypíšete přes Remote Desktop Gateway Management připojený ke vzdálenému počítači vlastnosti RDG, ihned vás praští mezi oči, že na záložce SSL certifikátu nemáte žádný certifikát! Dokonce i na stránce dashboardu máte červený křížek s chybou hlásající, že chybí SSL certifikát! Opět: službu zkouším takto nastavenou – a funguje bezvadně. Navíc: při výměne certifikátu  přes GUI jsem musel minimálně jednou, ale zpravidla vícekráte restartovat RDG server, než se přes něj dalo připojit. Při výměně přes netsh http add sslcert … jsem ani neobdržel hlášku o restartu čehokoliv a připojování klientů fachalo v tu ránu beze ztráty kytičky…..

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 )

Google photo

Komentujete pomocí vašeho Google úč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í: