将 MS SQL 群集配置为后端数据库

PAM360 支持使用 MS SQL 群集作为后端数据库,提供了一种安全且可扩展的选项。将 PAM360 配置为使用 MS SQL 群集与配置为使用独立 SQL 服务器有显著差异。这是因为 PAM360 设计为仅通过 SSL 连接到 SQL 服务器群集,以确保高水平的安全性。

当使用独立的 SQL Server 作为后端数据库时,SSL 证书是使用 SQL Server 的完全限定域名 (FQDN) 创建的,并导入到本地计算机的“个人”证书存储中。随后,SQL Server 配置管理器会在证书配置界面中列出与 SQL Server 域名匹配的证书。然而,在设置 SQL Server 群集时,此方法并不适用。

对于 SQL Server 群集,您应获取一个使用故障转移群集实例完全限定域名 (FQDN) 的服务器证书,并将其安装在故障转移群集内的所有节点上。 例如,如果您有一个由 test1.yourcompany.com 和 test2.yourcompany.com 两个节点组成的集群,且故障转移群集实例名为 pam360cluster,则需要获取 pam360cluster.yourcompany.com 的证书,并将其安装在两个节点上。

注意

建议先在测试环境中尝试这些步骤,并验证一切是否正常运行。您可以 下载 PAM360 并尝试使用 MS SQL 集群作为后端。

要使用MSSQL Always-On 故障转移群集,您需要在pam360_key.key文件中添加如下所示的条目:

ENCRYPTIONKEY=n2Z(-*zcPioHfYpmrQwrmICiXmiRUbhQ
MASTERKEY=s4X)6@ajSXCETRC

主加密密钥位于 <PAM360 安装目录>\conf 文件夹下的 masterkey.key文件中

以下部分将指导您将 MS SQL 群集配置为 PAM360 的后端数据库:

  1. 创建 SSL 证书并将其安装到 Windows 证书存储中
  2. 在所有运行 SQL Server 的节点上安装服务器证书
  3. 在 PAM360 中安装服务器证书
  4. 在所有 SQL Server 节点上启用 SSL 加密
  5. 执行 ChangeDB.bat

1. 创建 SSL 证书并将其安装到 Windows 证书存储中
(在运行 SQL Server 的机器上)

在将 PAM360 连接到 SQL Server 之前,您需要在 SQL Server 中启用 SSL 加密。为此,您需要一个由证书颁发机构 (CA) 签名的 SSL 证书,或自签名证书。

注意

用于 SQL 群集的 SQL 证书应包含以下属性:

CN: cl-sql.example.com
SAN:
<li>sql-node1
sql-node1.example.com
sql-node2
sql-node2.example.com
sqlinstance
sqlinstance.example.com
</li>


1.1 生成证书并由第三方 CA 进行签名

如果您已拥有由 CA 签名的 SSL 证书,请直接从第 4 步开始进行证书安装。否则,请按照以下第 1 至 3 步生成并安装新的 CA 签名证书:

  1. 首先,使用 openssl 生成一个私钥。在终端中执行以下命令:
    openssl genrsa -des3 -out server.key 2048
    此命令将生成一个 2048 位的 RSA 私钥,并将其保存为server.key,该文件受密码短语保护。
  2. 使用该私钥创建证书签名请求(CSR)。该请求将发送给证书颁发机构(CA)进行签名。执行以下命令:
    openssl req -new -key server.key -out server.csr
    在此过程中,系统将提示您输入密钥的密码短语,并提供“通用名称”、“主机名 ”或“IP 地址”等信息,其中“通用名称”应为您的 SQL Server的完全合格域名 (FQDN)
  3. 将生成的 CSR(server.csr)提交给第三方 CA,例如 VeriSignThawteRapidSSL 进行签名。有关提交CSR和完成签名流程的说明,请参阅相应CA的文档。请注意,此服务通常需要付费。几天后,您将收到已签名的SSL证书和CA的根证书,格式均为`.cer`文件。
  4. 在所有运行 SQL Server 的节点上安装服务器证书。
  5. 请按照以下步骤在 PAM360 中安装 CA 根证书:
    1. 将 CA 的根证书复制到<PAM360 安装目录>\bin目录中。
    2. <PAM360 安装目录>\bin目录下,执行以下命令:
      importCert.bat <证书的绝对路径>
      <证书的绝对路径>替换为您所复制的主证书文件的实际路径。此命令将主证书添加到 PAM360 证书存储中。

1.2 使用 PowerShell 创建自签名证书

要在 SQL Server 安装的计算机上创建并使用自签名证书,请执行以下步骤:

  1. 导航至SQL Server并打开PowerShell(以管理员身份运行)。
  2. 执行以下命令;该命令将安装并存储一个自签名证书到您的本地存储中。
    New-SelfSignedCertificate -DnsName SQL 服务器的完全限定域名 (FQDN) -CertStoreLocation cert:\LocalMachine\My
    若要在所有节点上进一步安装服务器证书,则需要使用此创建的服务器证书。请按照以下步骤将创建的自签名证书导出为 .pfx 文件:
    1. 单击“开始”,然后选择“运行”。在“运行”对话框中,输入MMC并按回车键。这将打开Microsoft 管理控制台 (MMC)
    2. “控制台”菜单中,选择 “添加/删除管理单元”。
    3. 单击“添加”,然后选择“证书”,再单击“添加”
    4. 在提示时,选择管理计算机帐户的证书。
    5. 导航至“管理用户证书(本地计算机)” >> “个人” >> “证书”
    6. 找到已创建的自签名证书,右键单击并将其导出为 .pfx 文件。

2. 在所有 SQL Server 节点上安装服务器证书

  1. 点击“开始”>>“运行”(在运行 SQL Server 的机器上)。在“运行”对话框中输入MMC
  2. 在“控制台”菜单上,单击“添加/删除管理单元”。单击“添加” >> “证书”。再次单击“添加”。系统将提示您为当前用户帐户、服务帐户或计算机帐户打开管理单元。
  3. 选择“计算机账户”。
  4. 选择“证书(本地计算机)>> “个人” >> “证书”
  5. 右键单击“证书”>> 单击“所有任务”>> 单击“导入”
  6. 浏览并选择要安装的证书。
    importcertificate

3. 在 PAM360 中安装服务器证书

  1. 复制服务器证书并将其粘贴到<PAM360 安装文件夹>/bin目录下。
  2. <PAM360 安装文件夹>/bin目录下,执行以下命令;这将把证书添加到 PAM360 证书存储中。
    importCert.bat <证书的绝对路径>

4. 在所有运行 SQL Server 的节点上启用 SSL 加密

要使用 SSL 加密连接,SQL Server 依赖于一个特定的证书,该证书通过其指纹进行标识,并存储在以下注册表项中:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib\Certificate

此注册表项包含证书的拇指印,这是一个用于区分服务器上每个证书的唯一标识符。
registry

要正确配置 SSL 加密,请按照以下步骤复制并更新注册表中的指纹:

  1. 复制指纹:首先从证书中复制指纹。将其粘贴到文本编辑器(如记事本)中,以确保指纹中不包含任何隐藏的 Unicode 字符。
    certificate
  2. 转换为 ANSI 格式:将记事本文件保存为 ANSI 格式。当出现对话框时,单击“确定”继续转换。
  3. 删除多余字符:重新打开 ANSI 格式的文件,删除转换过程中可能出现的任何不需要的“?”字符。此外,删除指纹中字符之间的空格。
  4. 更新注册表: 获得清理后的指纹后, 将其保存至注册表中的证书属性,路径为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib\Certificate

只要仔细按照这些步骤操作,您就可以确保在所有运行 SQL Server 的节点上正确配置了 SSL 加密。

5. 执行 ChangeDB.bat

完成上述步骤后,您需要在 PAM360 中执行ChangeDB.bat。请参阅 《配置 MS SQL Server 作为后端数据库》 中的第 4 节。

6. 故障排除提示


1. 在 SQL Server 中启用 SSL 加密时,证书下拉列表中未显示服务器证书?

如果添加到 MMC 控制台的服务器证书未显示在证书下拉列表中,则必须手动更新 SQL Server 的 SSL 加密证书。SQL Server 用于加密连接的证书在以下注册表项中指定:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib

该键包含一个名为“拇指印”(thumbprint)的证书属性,该属性可唯一标识服务器中的每个证书。
registry

应将我们为服务器创建的证书的“Thumbprint”值复制并更新到注册表的证书属性中。
certificate

注意:要正确复制并更新拇指印,请按照以下步骤操作:

  1. 从拇指印中移除 Unicode 字符。您可以通过将拇指印粘贴到记事本中来实现。
  2. 将记事本中的内容另存为 ANSI 格式的文件。
  3. 打开该 ANSI 格式文件,并删除文件中的“?”字符。
  4. 删除指纹中字符之间的空格。
  5. 将此指纹保存至 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\Certificate 属性中。




Top