Bei der Untersuchung dieses Problems konnte ich keine Start-Ziel-Lösungen für selbstsignierende PowerShell-Skripts finden. Wie gehen Sie also mit der PowerShell selbst um, um die Ausführungsrichtlinien AllSigned
zu nutzen und Ihre Systeme besser zu sichern?Erstellen von selbstsignierten PowerShell-Skripts zum Start
Antwort
Dies ist ein moderner Ansatz für selbstsignierte PowerShell-Skripts. Ich habe festgestellt, ältere Versionen von PowerShell ISE (nur bestätigt 2.0) wird Ihre Skripte in Big Endian vs UTF-8 kodieren und Probleme mit der Unterzeichnung verursachen. Mit dieser Methode sollten Sie nicht darauf stoßen, da wir auf v4 + hier sind.
Anforderung: PoSH 4.0+.
Diese Funktion prüft: ob ein Pfx-Zertifikat existiert und importiert es in LocalMachine\TrustedPublisher
; Überprüfen Sie, ob ein Zertifikat an es übergeben wurde, exportieren Sie es in ein Pfx-Zertifikat und importieren Sie es; oder erstellen Sie das Zertifikat zu LocalMachine\Personal
, exportieren Sie es und importieren Sie es. Ich war nicht in der Lage, die Erlaubnis zu bekommen, mit mir zu arbeiten, die Geschäfte außerhalb von \My
(Personal) zu verwenden.
$ErrorActionPreference = 'Stop'
Function New-SelfSignedCertificate
{
Param([Parameter(Mandatory=$True)]$PfxCertPath,$CertObj)
# Creates a SecureString object
$Cred = (Get-Credential).Password
If (Test-Path $PfxCertPath)
{
Try {
Import-PfxCertificate -FilePath $PfxCertPath -Password $Cred -CertStoreLocation Cert:\LocalMachine\TrustedPublisher
Write "$($PfxCertPath.FriendlyName) exists and is valid. Imported certificate to TrustedPublishers"
} Catch {
Write "Type mismatch or improper permission. Ensure your PFX cert is formed properly."
Write "[$($_.Exception.GetType().FullName)] $($_.Exception.Message)"
}
} ElseIf ($CertObj) {
Try {
Export-PfxCertificate -Cert $CertObj -FilePath $PfxCertPath -Password $Cred -Force
Import-PfxCertificate -FilePath $PfxCertPath -Password $Cred -CertStoreLocation Cert:\LocalMachine\TrustedPublisher
} Catch {
Write "[$($_.Exception.GetType().FullName)] $($_.Exception.Message)"
}
} Else {
Try {
$DNS = "$((GWMI Win32_ComputerSystem).DNSHostName).$((GWMI Win32_ComputerSystem).Domain)"
$CertObj = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName $DNS -Type CodeSigningCert -FriendlyName 'Self-Sign'
Export-PfxCertificate -Cert $CertObj -FilePath $PfxCertPath -Password $Cred -Force
Import-PfxCertificate -FilePath $PfxCertPath -Password $Cred -CertStoreLocation Cert:\LocalMachine\TrustedPublisher
} Catch {
Write "[$($_.Exception.GetType().FullName)] $($_.Exception.Message)"
}
}
}
# Can be called like:
# Sign-Script -File C:\Script.ps1 -Certificate (GCI Cert:\LocalMachine\TrustedPublisher -CodeSigningCert)
#
# After the cert is imported to TrustedPublisher, you can use the
# exported pfx cert to sign on the machine instead of this method
Function Sign-Script
{
Param($File,$Cert)
If($Cert-is[String]){Try{$Cert=Get-PfxCertificate("$Cert")}Catch{}}
Set-AuthenticodeSignature -FilePath $File -Certificate $Cert -Force
}
Function Check-SignedScript
{
Param($File)
Get-AuthenticodeSignature -FilePath $File
}
Nachdem alles gesagt und getan ist, können Sie Set-ExecutionPolicy AllSigned
als Administrator ausführen und dieses Skript verwenden, um alle Ihre Skripte unterschreiben. Check-SignedScript
wird Ihnen sagen, ob das Zeichen gültig ist und Sie können sagen, ob Sign-Script
funktioniert, da Ihre Datei # SIG # Begin signature block
am Ende haben wird. Alle Änderungen an einem signierten Skript müssen neu signiert werden, um ausgeführt werden zu können.
- 1. Vom selbstsignierten SSL-Zertifikat zum vertrauenswürdigen Zertifikat
- 2. Mit einem selbstsignierten Zertifikat
- 3. BizTalk 2013 - AS2 selbstsignierten
- 4. MusicPlayer Pause und Start von ihm zum Start
- 5. Erstellen Azure selbstsignierten sertificate mit Power Invoke-AddCertToKeyVault Befehl
- 6. Android SSLSockets mit selbstsignierten Zertifikaten
- 7. Programm zum Start hinzufügen
- 8. Erstellen von Auto-Start-Anwendungen in Xamarin.Forms
- 9. Android Webview verwenden selbstsignierten certficate
- 10. Verwenden von Vektoren zum Erstellen von Formen
- 11. dev.new() Start zum zweiten Monitor
- 12. Verifizieren meines selbstsignierten Zertifikats mit OpenSSL
- 13. Konfigurieren von BASH zum Eingeben von Tastenanschlägen beim Start
- 14. SmtpClient mit einem selbstsignierten SSL-Zertifikat arbeiten
- 15. Terminal-Befehl zum Erstellen und Installieren der iPhone App im Simulator ohne Start von Xcode
- 16. Was ist eine schnelle Möglichkeit zum Erstellen von SQL-Tabellen beim Start?
- 17. Erzeugen eines selbstsignierten Zertifikats mit iOS Security.framework?
- 18. Logik zum Erstellen von Graphen C++
- 19. Erste Fehler zum Erstellen von Google Anmeldung
- 20. zum Erstellen von SQL-Abfrage
- 21. Software zum Erstellen von Datenstrukturdiagrammen?
- 22. Code zum Erstellen von Vorlagen
- 23. Sprache zum Erstellen von Flussdiagrammen
- 24. Frameworks zum Erstellen von Webanwendungen
- 25. Funktion zum Erstellen von Farbrädern
- 26. Datenstrukturen zum Erstellen von Dateisystemen?
- 27. Tools zum Erstellen von AnimatedVectorDrawable
- 28. Benutzereingabe zum Erstellen von Objekten
- 29. Java: SSL-Client-Authentifizierung mit selbstsignierten Zertifikaten
- 30. Systemd: Pass Start/Stop zum Dienst