PowerShell 암호 PFX 파일로 인증서 지문 가져오기
다음 코드를 사용하여 암호로 보호된 pfx 파일의 지문을 가져오려고 합니다.
function Get-CertificateThumbprint {
#
# This will return a certificate thumbprint, null if the file isn't found or throw an exception.
#
param (
[parameter(Mandatory = $true)][string] $CertificatePath,
[parameter(Mandatory = $false)][string] $CertificatePassword
)
try {
if (!(Test-Path $CertificatePath)) {
return $null;
}
if ($CertificatePassword) {
$sSecStrPassword = ConvertTo-SecureString -String $CertificatePassword -Force –AsPlainText
}
$certificateObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$certificateObject.Import($CertificatePath, $sSecStrPassword);
return $certificateObject.Thumbprint
} catch [Exception] {
#
# Catch accounts already added.
throw $_;
}
}
실행하면 다음과 같은 오류가 발생합니다.
Cannot find an overload for "Import" and the argument count: "2".
At C:\temp\test.ps1:36 char:9
+ $certificateObject.Import($CertificatePath, $sSecStrPassword);
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
누가 제가 이것을 해결하는 것을 도와주실 수 있습니까?
다들 감사합니다. :-)
이 SuperUser 응답에 따라 PS 3.0에서는 Get-PfxCertificate 명령을 사용하여 다음 작업을 수행합니다.
Get-PfxCertificate -FilePath Certificate.pfx
당신은 이걸 할 수 있다.
$certificateObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$certificateObject.Import($CertificatePath, $sSecStrPassword, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet)
return $certificateObject.Thumbprint
$CertificatePath와 $sSecStrPassword라는 두 변수를 설정해야 합니다.
업데이트됨:
$certificateObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertificatePath, $sSecStrPassword)
PowerShell 오류 메시지가 맞습니다.두 개의 매개 변수를 사용하는 오버로드는 없습니다.사용 중인 매개 변수를 기준으로 했을 때, 세 번째 매개 변수인 열거형이 필요한 오버로드를 원하는 것 같습니다.X509KeyStorageFlags
예.
$certificateObject.Import($CertificatePath, $sSecStrPassword, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet)
Windows PowerShell 5.1에서 파일을 가져오지 않고 파일의 인증서 지문을 읽는 데 사용한 내용은 다음과 같습니다.
$Thumbprint = (Get-PfxData -Password $MyPFXCertificatePwdSecureString -FilePath $CertificateFilePath).EndEntityCertificates.Thumbprint
Get-PfxData에 대한 자세한 정보는 https://learn.microsoft.com/en-us/powershell/module/pkiclient/get-pfxdata 에서 확인할 수 있습니다.
참고로 Get-PfxCertificate는 powershell 6.0에서 암호를 전달하는 기능을 추가할 것으로 보입니다.
https://github.com/PowerShell/PowerShell-Docs/issues/2150
이 답변 덕분에:인증서 지문을 추출하는 명령줄 유틸리티가 있습니까?저는 다음과 같은 훌륭한 기능을 갖춘 원라이너를 고안해 낼 수 있었습니다.
$thumbprint = (certutil -split -dump .\cert.pfx | findstr /c:"Cert Hash(sha1)").Substring(17)[-1]
PFX가 비밀번호 보호를 받고 있다면,
$thumbprint = (certutil -split -p the_secret_password_to_my_pfx -dump .\cert.pfx | findstr /c:"Cert Hash(sha1)").Substring(17)[-1]
기술적으로, 그것은 특정한 유용성을 불러일으키기 때문에 순수한 파워셸이 아닙니다.예, 하지만 그건 모든 윈도우 시스템에 있어야 하기 때문에 작동합니다.
powershell에서 경로 오류가 발생하면 아래 스크립트를 사용합니다.
$FilePath = "c:\a\"
$FileName = "mycert"
$FileType = ".pfx"
$certificateObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$certificateObject.Import($FilePath+$FileName+$FileType, $sSecStrPassword, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet)
return $certificateObject.Thumbprint
언급URL : https://stackoverflow.com/questions/26877356/powershell-get-certificate-thumbprint-with-password-pfx-file
'programing' 카테고리의 다른 글
깃 스테이시 2회 (0) | 2023.09.08 |
---|---|
PHP에서 변수 형식을 변환하는 type casting vs 함수 (0) | 2023.09.08 |
$(문서)를 여러 개 가질 수 있습니까?준비 완료(함수 {...}); 섹션? (0) | 2023.09.08 |
파워셸이 배치 파일을 실행한 다음 열려 있도록 하려면 어떻게 해야 합니까? (0) | 2023.09.08 |
jQuery가 업로드 시 파일 형식을 제한하도록 하는 방법은 무엇입니까? (0) | 2023.09.08 |