Schlagwort-Archive: PowerShell Framework

PowerShell ist ein plattformübergreifendes Framework und Skriptsprache von Microsoft zur Automatisierung, Konfiguration und Verwaltung von Systemen.

Erstellen eines neuen selbstsignierten Zertifikats mit PowerShell

Manchmal benötigen wir ein selbstsigniertes Zertifikat für Webseiten über HTTPS, insbesondere in Labs und zu Testzwecken, etwa um eine Web-App zu testen oder für das Intranet Portal. Dieses Tutorial zeigt hier mit Windows 11, die Vorgehensweise um einfach selbstsignierte Zertifikate in der PowerShell auszustellen und zu installieren.

Inhalt

Zuvor musste man sich mit makecert.exe behelfen welches ein Teil von Microsoft Windows SDK ist, um selbstsignierte Zertifikate auszustellen. Ab Windows 8 kann dies in der PowerShell erfolgen, so gibt es das cmdlet New-SelfSignedCertificate. Es lassen sich SSL/TLS-Zertifikate ausstellen, für die asymmetrischen Kryptografie, die Client- und Server-Authentifizierung oder die Code-Signierung.

Zertifikat erstellen mit New-SelfSignedCertificate

Öffne hierzu die PowerShell als Administrator und führe die folgenden Befehlszeilen aus.

New-SelfSignedCertificate -DnsName "localdomain.local", "dev.ops.local" -CertStoreLocation "cert:\LocalMachine\My"
$pass=ConvertTo-SecureString "pass123" -AsPlainText -force
$file="$env:temp\SelfSignedCert.pfx"
Export-PFXCertificate -cert cert:\LocalMachine\My\<Thumbprint output during first command> -file $file -Password $pass
Import-PfxCertificate -FilePath $file cert:\LocalMachine\root -Password $pass

In diesem Beispiel wird ein selbstsigniertes SSL-Serverzertifikat im Zertifikatsspeicher des Computers erstellt, wobei der alternative Antragstellername auf localdomain.local, dev.ops.local und der Antragsteller und Ausstellername auf localdomain.local festgelegt ist.

Erstellen eines neuen selbstsignierten Zertifikats mit PowerShell

  Platzhalter mit dem tatsächlichen Fingerabdruck (Thumbprint) ersetzen, der anstelle von Thumbprint output during first command eingefügt wird.

Hinweis: Lege die PowerShell-Ausführungsrichtlinie von Restricted auf RemoteSigned oder Unrestricted fest, damit lokale PowerShell-Skripts ausgeführt werden können.

PS C:\> Set-ExecutionPolicy RemoteSigned

Nach erstellen des Zertifikats wird dieses in das PFX-Format exportiert um es anschließend in den Zertifikatsspeicher zu importieren.

Das Zertifikat das gerade ausgestellt wurde, findet man jetzt im Zertifikatsmanager (CERTLM.MSC) der Microsoft Management Console (mmc) unter Vertrauenswürdige Stammzertifizierungsstellen.

Zertifikatsmanager CERTLM.MSC der Microsoft Management Console
Zertifikate Lokaler Computer: CERTLM.MSC

Selbstsignierte Zertifikate automatisch erstellen

Das Automatische Erstellen des selbstsignierten Zertifikats ohne Eingaben, weitere Aktionen sind nicht erforderlich, es wird der Computername und, falls vorhanden, der Domänenname verwendet, um das selbstsignierte Zertifikat auszustellen.

New-SelfSignedCertificate -DnsName "$env:COMPUTERNAME.$env:USERDNSDOMAIN" -CertStoreLocation "cert:\LocalMachine\My"
$pass=ConvertTo-SecureString "pass123" -AsPlainText -force
$file="$env:temp\SelfSignedCert.pfx"
$thumbprint=Get-ChildItem -Path Cert:\LocalMachine\MY | Where-Object {$_.Subject -Match "$env:COMPUTERNAME.$env:USERDNSDOMAIN"} | Select-Object Thumbprint -ExpandProperty "Thumbprint"
Export-PFXCertificate -cert cert:\LocalMachine\My\"$thumbprint" -file $file -Password $pass
Import-PfxCertificate -FilePath $file cert:\LocalMachine\root -Password $pass

Der Fingerabdruck wird in Zeile 4 in die Variable „$thumbprint“ geschrieben, um ihn dann im Export Befehl übergeben zu können.

PS C:\> Get-ChildItem -Path Cert:\LocalMachine\MY | Where-Object {$_.Subject -Match "$env:COMPUTERNAME.$env:USERDNSDOMAIN"} | Select-Object Thumbprint

Mit diesem Befehl kann das gerade erstellte selbstsignierte Zertifikat zur Überprüfung angezeigt werden.

Wenn für das Zertifikat ein bestimmter Common Name (CN) benötigt wird, kann dieses Skript ausgeführt werden. Es fordert dazu auf ein Common Name einzugeben, um das selbstsignierte Zertifikat der URL entsprechend zu erstellen.

$CommonName=Read-Host -Prompt 'Enter a Common Name (CN)'
if ($CommonName) {
	Write-Output "Self-Signed Certificate [$CommonName] processing.."
} else {
	Write-Warning -Message "Missing Common Name (CN)!"
	Break;
}
New-SelfSignedCertificate -DnsName "$CommonName" -CertStoreLocation "cert:\LocalMachine\My"
$pass=ConvertTo-SecureString "pass123" -AsPlainText -force
$file="$env:temp\$CommonName.pfx"
$thumbprint=Get-ChildItem -Path Cert:\LocalMachine\MY | Where-Object {$_.Subject -Match "$CommonName"} | Select-Object Thumbprint -ExpandProperty "Thumbprint"
Export-PFXCertificate -cert cert:\LocalMachine\My\"$thumbprint" -file $file -Password $pass
Import-PfxCertificate -FilePath $file cert:\LocalMachine\root -Password $pass

IPv6 aktivieren oder deaktivieren in Windows 10

IPv6 Internetprotokoll in Windows PowerShell aktivieren, deaktivieren

Das Internetprotokoll Version 6 (IPv6) ist das neue Standardprotokoll für die Netzwerkschicht des Internets. IPv6 wurde entwickelt, um viele der Probleme der aktuellen Version der Internet Protocol (bekannt als IPv4) in Bezug auf Adressverarmung, Sicherheit, automatische Konfiguration, Erweiterbarkeit usw. zu lösen. IPv6 erweitert die Möglichkeiten des Internets, um neue Arten von Anwendungen zu ermöglichen, darunter Peer-to-Peer- und mobile Anwendungen.

IPv6 ist standardmäßig in Windows aktiviert, oft muss jedoch IPv6 möglicherweise deaktiviert werden. Beispielsweise beim hinzufügen eines PCs zu einer Active Directory Domäne.

Dieses Tutorial zeigt, wie man IPv6 für alle oder bestimmte Netzwerkadapter in Windows 8.1, Windows 10 und Windows 11 aktivieren oder deaktivieren kann.

So aktiviert man IPv6 für einen bestimmten Netzwerkadapter in der PowerShell

Kopiere den folgenden Befehl und füge ihn in PowerShell mit erhöhten rechte ein, um den Befehl mit der Eingabe Taste auszuführen, damit wird der aktuelle IPv6 Status für alle Netzwerkadapter ausgegeben.

Get-NetAdapterBinding -ComponentID ms_tcpip6

Die IPv6 Status Information der Netzwerkadapter könnte etwa wie die folgende aussehen.

Name                           DisplayName                                        ComponentID          Enabled
----                           -----------                                        -----------          -------
Ethernet                       Internetprotokoll, Version 6 (TCP/IPv6)            ms_tcpip6            True
WLAN                           Internetprotokoll, Version 6 (TCP/IPv6)            ms_tcpip6            True
Bluetooth-Netzwerkverbindung   Internetprotokoll, Version 6 (TCP/IPv6)            ms_tcpip6            True
OpenVPN Wintun                 Internetprotokoll, Version 6 (TCP/IPv6)            ms_tcpip6            True

Soll nun für den WLAN Adapter das IPv6 Protokoll deaktiviert werden, kann folgender Befehl in der PowerShell mit erhöhten rechte ausgeführt werden.

Enable-NetAdapterBinding -Name "WLAN" -ComponentID ms_tcpip6

So deaktiviert man IPv6 in der PowerShell für alle Netzwerkadapter

Kopiere den folgenden Befehl und füge ihn in PowerShell mit erhöhten rechte ein, um ihn mit der Eingabe Taste auszuführen.

Disable-NetAdapterBinding -Name "*" -ComponentID ms_tcpip6

Es wird IPv6 für alle Netzwerkadapter deaktiviert.