有没有一种方法可以续订证书,而无需更改 SQL Server 配置管理器中的证书(指纹)?

问题描述 投票:0回答:2

我正在向 SQL 添加/更改证书(手动和通过 powershell 脚本编写)。

我找到证书 -> 将其添加到 SQL(在配置管理器中手动或通过 powershell -> 将证书的指纹放入 SQL 注册表中)。 这一切似乎运行良好。 但是当我续订证书时(右键单击证书 -> 所有任务 ->“使用新密钥续订证书...”),由于该证书过期或其他原因),旧指纹将保留在 SQL 注册表中,并且SQL 配置管理器将在证书所在位置显示一个空行。

是否有一种方法可以更新证书,而无需更改 SQL Server 配置管理器中的证书(指纹)?

sql powershell certificate
2个回答
2
投票

你不能这样做。

指纹是证书中许多属性的哈希值。即使一个属性有微小的不同,也会导致证书哈希值显着不同。

A(...) 指纹是一个计算字段,即不是证书数据本身的一部分。在 GUI 中,这些称为属性。在 shell 扩展中,指纹称为“指纹”,在 Certutil 输出中称为“证书哈希”。由此我们可以推测指纹是某种哈希或单向函数(OWF),其友好名称为“指纹”。

这篇帖子有更详细的介绍。

更新证书后,您只需运行 tSql 脚本即可更新 SQL Server 上的证书绑定。 这篇文章详细介绍了它的外观。

然后您可以使用 PowerShell 的 SQL dbaTools 模块运行脚本。


0
投票
# Define the server and certificate details
$server = "YOUR_SQL_SERVER"
$certThumbprint = "YOUR_CERT_THUMBPRINT"
# Check certificate expiration
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq $certThumbprint }
$expirationDate = $cert.NotAfter
$today = Get-Date
# If the certificate is near expiration, initiate the renewal process
if ($expirationDate -lt $today.AddDays(30)) {
    # Renew certificate logic here (Let’s Encrypt, etc.)
    The write-Host "Certificate is about to expire. Renewing..."
    # Apply renewed certificate to SQL Server
    # Restart SQL services if needed
}
© www.soinside.com 2019 - 2024. All rights reserved.