替换 SharePoint Server 的 STS 证书

适用于:yes-img-132013 yes-img-162016 yes-img-192019 yes-img-seSubscription Edition no-img-sopSharePoint in Microsoft 365

本主题提供有关在 SharePoint 场中替换 SharePoint 安全令牌服务 (STS) 证书的信息。

证书要求

从受信任的证书颁发机构购买证书,从自承载 PKI 基础结构 ((例如 Active Directory 证书服务) )创建新证书,或者创建 certreq.exe 通过或 New-SelfSignedCertificate) 创建的自签名证书 (。 证书必须使用 2048 位加密或更高版本。

若要替换 STS 证书,需要将公共证书 (CER) 和公钥与私钥证书 (PFX) 和证书的友好名称。

应在维护时段内替换证书,因为必须重启 SharePoint 计时器服务 (SPTimerV4) 。

作为公共证书,默认情况下,专用证书在 1 到 3 年内过期,具体取决于指定的有效期,当证书需要续订时,应遵循此过程。

注意

无需续订默认 STS 证书。 仅在替换 STS 证书后续订。

创建 Self-Signed 证书

若要创建自签名证书,请选择创建方法并按照以下步骤操作。

提示

公用名和 DNS 名称可以设置为任何值。

注意

证书私钥和密码是敏感的。 使用强密码并安全地存储 PFX 文件。

New-SelfSignedCertificate

New-SelfSignedCertificate -DnsName 'sts.contoso.com' -KeyLength 2048 -FriendlyName 'SharePoint STS Certificate' -CertStoreLocation 'cert:\LocalMachine\My' -KeySpec KeyExchange
$password = ConvertTo-SecureString "P@ssw0rd1!" -Force -AsPlainText
$cert = Get-ChildItem "cert:\localmachine\my" | ?{$_.Subject -eq "CN=sts.contoso.com"}
Export-PfxCertificate -Cert $cert -Password $password -FilePath C:\sts.pfx
Export-Certificate -Cert $cert -Type CERT -FilePath C:\sts.cer

此示例创建 DNS 名称为“sts.contoso.com”和“CN=sts.contoso.com”的新证书。 “公用名”由 New-SelfSignedCertificate cmdlet 自动设置。 然后,使用安全密码,将 PFX (sts.pfx) 和公共证书导出 (sts.cer) 。

Certreq

为证书创建一个新文件 request.inf。 在下面的示例中根据需要调整主题。

[Version]
Signature="$Windows NT$

[NewRequest]
FriendlyName = "SharePoint STS Certificate"
Subject = "CN=sts.contoso.com"
KeyLength = 2048
KeyAlgorithm = RSA
KeyUsage = "CERT_KEY_ENCIPHERMENT_KEY_USAGE | CERT_DIGITAL_SIGNATURE_KEY_USAGE"
KeySpec = "AT_KEYEXCHANGE"
MachineKeySet = true
RequestType = Cert
ExportableEncrypted = true

[Strings]
szOID_ENHANCED_KEY_USAGE = "2.5.29.37"
szOID_PKIX_KP_SERVER_AUTH = "1.3.6.1.5.5.7.3.1"
szOID_PKIX_KP_CLIENT_AUTH = "1.3.6.1.5.5.7.3.2"

[Extensions]
%szOID_ENHANCED_KEY_USAGE%="{text}%szOID_PKIX_KP_SERVER_AUTH%,"
_continue_ = "%szOID_PKIX_KP_CLIENT_AUTH%"

从提升的命令提示符中,运行以下命令以在本地计算机存储中创建和安装证书。 安装证书后,将显示保存对话框。 将“另存为”类型更改为 Certificate Files ,并将文件另存为 C:\sts.cer

certreq -new request.inf
certutil -store My "sts.contoso.com"

复制第二个命令的 SerialNumber 输出,并在以下命令中使用它。 将 SerialNumber> 替换为<实际值。

certutil -exportPFX -p "P@ssw0rd1!" CA <SerialNumber> C:\sts.pfx

第一步基于上述请求创建证书。 第二步允许我们查找新证书的序列号。 最后,最后一步将证书导出到受密码保护的 PFX。

替换 STS 证书

必须在场中的每个服务器上执行此过程。 第一步是将 PFX 导入本地计算机存储中的受信任的根证书颁发机构容器。

Import-PfxCertificate

若要使用 Import-PfxCertificate导入 PFX,请按照示例操作。

$password = Get-Credential -UserName "certificate" -Message "Enter password"
Import-PfxCertificate -FilePath C:\sts.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $password.Password

在此示例中,我们首先创建一个凭据。 此示例中未使用用户名,但必须设置用户名。 密码将是导出的 PFX 密码的值;在我们的示例中,“P@ssw0rd1!”。

Certutil

certutil -f -p "P@ssw0rd1!" -importpfx Root C:\sts.pfx

在此示例中,我们使用 导入 PFX 文件 certutil,指定导出 PFX 并导入本地计算机存储中的受信任的根证书颁发机构容器时使用的密码。

替换 SharePoint 中的 STS 证书

在场中的所有 SharePoint 服务器上导入 PFX 后,我们必须替换 STS 正在使用的证书。 您必须是 SharePoint Shell 管理员 (请参阅 Add-SPShellAdmin ,详细了解如何添加 SharePoint Shell 管理员) 以执行此操作。

使用 SharePoint 命令行管理程序,我们将指定 PFX 文件的路径,设置密码,将 STS 设置为使用新证书,重启 IIS,最后重启 SharePoint 计时器服务 (SPTimerV4) 。

$path = 'C:\sts.pfx'
$pass = 'P@ssw0rd1!'
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($path, $pass, 20)
Set-SPSecurityTokenServiceConfig -ImportSigningCertificate $cert
iisreset
Restart-Service SPTimerV4

在场中的所有 SharePoint 服务器上完成上述步骤。 这将完成 STS 证书更换过程。 如果使用混合场,请参阅 使用 Microsoft 365 SharePoint 网站对本地 SharePoint 站点上的提供程序托管的加载项进行授权 ,了解将 STS 证书上传到 Azure 所需的其他步骤。

另请参阅

SharePoint Server 的混合配置

Certreq

Certutil