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