30. 8. 2025

Jak na zabezpečný cerrifkiát ve Windows

 Pomocí power shellu jde dělat spoustu věcí.

Automatizoval jsem si ním import certifikátu, který vzniká pro potřeby reverzní proxy na Linuxu a v dohledné době by měla být reverzní proxy přímo součástí RouterOS do Mikrotiku.

Díky tomu že už někteří ISP nabízí IPv6, tak jde získat certifikát např. pro nějterou z dynamickýych DNS služeb nebo adresy ABCD12345609.sn.mynetname.net pro ty, kteří mají Mikrotik.

Zde je skript pro import:

# --- KONFIGURACE ---

$domainName = "ABCD12345609.sn.mynetname.net"

$pfxPath = "\CESTA\K\CERTIFIKATU\soubor.pfx"

$pfxPass = "#1HesloProExport#"


# 1. ÚKLID: Smaže staré certifikáty pro danou doménu z úložiště Osobní i Vzdálená plocha

Write-Host "Čistím staré certifikáty pro $domainName..." -ForegroundColor Cyan

Get-ChildItem "Cert:\LocalMachine\My", "Cert:\LocalMachine\Remote Desktop" -ErrorAction SilentlyContinue | 

    Where-Object { $_.Subject -like "*$domainName*" } | 

    Remove-Item -Force


# 2. IMPORT: Naimportuje nový certifikát

Write-Host "Importuji nový certifikát ze Sysvolu..." -ForegroundColor Cyan

$cert = Import-PfxCertificate -FilePath $pfxPath `

        -CertStoreLocation "Cert:\LocalMachine\My" `

        -Password (ConvertTo-SecureString $pfxPass -AsPlainText -Force) `

        -Exportable


$thumb = $cert.Thumbprint


# 3. PRÁVA: Nastavení oprávnění pro NETWORK SERVICE k soukromému klíči

# Toto je kritický krok, aby RDP služba certifikát neodmítla

# Write-Host "Nastavuji práva pro NETWORK SERVICE..." -ForegroundColor Cyan

# $rsaCert = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($cert)

# $fileName = $rsaCert.key.UniqueName

# $path = "$env:ALLUSERSPROFILE\Microsoft\Crypto\Keys\$fileName"

# $acl = Get-Acl -Path $path

# $permission = "NT AUTHORITY\NETWORK SERVICE","Read","Allow"

# $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission

# $acl.AddAccessRule($accessRule)

# Set-Acl -Path $path -AclObject $acl


# 4. WMI: Přiřazení certifikátu k RDP službě

Write-Host "Přiřazuji certifikát k RDP přes WMI..." -ForegroundColor Cyan

$tsSettings = Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace "root\cimv2\terminalservices" -Filter "TerminalName='RDP-Tcp'"

Set-WmiInstance -Path $tsSettings.__path -Argument @{SSLCertificateSHA1Hash=$thumb}


# 5. RESTART: Restart služby pro aplikaci změn

Write-Host "Restartuji službu Vzdálená plocha..." -ForegroundColor Cyan

Restart-Service -Name TermService -Force


Write-Host "HOTOVO! RDP nyní používá certifikát $domainName ($thumb)." -ForegroundColor Green

Žádné komentáře:

Okomentovat

K vkládání komentáře se můžete přihlásit bez registrace pomocí OpenID na Seznam.cz