powershell - 当证书的现有指纹与站点匹配时,我想导入 SSL 证书
问题描述
我编写了一个 PS 脚本,其中将证书导入到现有站点到 IIS 服务器,但我想要一个脚本,其中将匹配我拥有的证书指纹与本地机器中证书的指纹存储,如果指纹匹配,则将该证书导入存储,如果不匹配,则不导入证书。
示例我有一个带有指纹 = XXXXXX 的 pfx 文件,脚本需要检查我的机器或任何远程服务器中是否有与上述相同的指纹,然后我需要替换或导入该位置的证书.
代码
Clear-Host
$certPath = 'C:\TEMP\Sample.pfx'
$CertificatePassword = 'XXXXXX'
$SiteName = "SampleTest"
$HostName = "Sitebinding.com"
$SiteFolder = Join-Path -Path 'C:\inetpub\wwwroot' -ChildPath $SiteName
Write-Host 'Import pfx certificate' $certPath
$certRootStore = “LocalMachine”
$certStore = "My"
$pfx = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$pfx.Import($certPath,$CertificatePassword,"Exportable,PersistKeySet")
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store($certStore,$certRootStore)
$store.Open('ReadWrite')
$store.Add($pfx)
$store.Close()
$certThumbprint = $pfx.Thumbprint
#Write-Host 'Add website' $SiteName
#New-WebSite -Name $SiteName -PhysicalPath $SiteFolder -Force
#$IISSite = "IIS:\Sites\$SiteName"
#Set-ItemProperty $IISSite -name Bindings -value @{protocol="https";bindingInformation="*:443:$HostName"}
#if($applicationPool) { Set-ItemProperty $IISSite -name ApplicationPool -value $applicationPool}
Write-Host 'Bind certificate with Thumbprint' $certThumbprint
#$obj = get-webconfiguration "//sites/site[@name='$SiteName']"
$obj = Get-WebBinding $SiteName -Port 443
#$binding = $obj.bindings.Collection[0]
#$method = $binding.Methods["AddSslCertificate"]
$method = $obj.Methods["AddSslCertificate"]
$methodInstance = $method.CreateInstance()
$methodInstance.Input.SetAttributeValue("certificateHash", $certThumbprint)
$methodInstance.Input.SetAttributeValue("certificateStoreName", $certStore)
$methodInstance.Execute()```
Thanks In Advance.
解决方案
似乎您可以执行if
包含查询Cert:
PSDrive
指纹的语句。然后只根据条件更新绑定。
if (Get-ChildItem Cert:\LocalMachine -Recurse | Where Thumbprint -eq $certThumbprint) {
# Update Binding
}
推荐阅读
- node.js - 在 Parallels (Windows 10) 上使用 Yarn 安装节点模块时出现问题
- node.js - 如果 bigtable 中不存在则插入行的原子方式
- oracle - 是否可以使用不同的 oracle 帐户在 springboot 应用程序中进行身份验证
- javascript - heatmap.js 将文本值添加到热图圆圈
- ethereum - Web3 JS 如何从区块中获取交易
- javascript - 日期时间本地输入,如持续时间输入
- c# - 是堆栈的ToArray方法
保证按此顺序返回? - r - R:根据第二列的 sum(n) 用变量 n 聚合每 n 行
- python - python:在groupby pandas中迭代,根据以前的值添加新列
- smalltalk - 可以在vm窗口外与opencv和screen交互吗?