• Facebook
  • Twitter(现为X)
  • Youtube
  • 内衬
  • RSS
  • 文档
  • 比较
  • 博客
  • 下载
  • 联系我们
下载
显示/隐藏目录

在 Windows 和 Linux 中配置 SSL/TLS 加密

当您想要保护通信时,应该配置 SSL/TLS 加密。 NCache 服务器和客户端,尤其是在数据安全至关重要的生产或分布式环境中,都需要进行TLS配置。该过程首先创建或获取TLS证书并将其放置在正确的证书存储区中。之后,只需记下证书名称和指纹,使用提供的命令或配置文件启用TLS,确保所有服务器和客户端使用相同的设置,然后重启服务器即可。 NCache 提供安全应用更改的服务。

注意:

在继续执行以下操作之前,请确保缓存和客户端进程已停止。

证书放置的注意事项

以下是针对 Windows 和 Linux 的证书放置的注意事项:

  • Windows
  • Linux

如果您有一个测试证书(包含根证书和中间证书),则需要将该证书添加到本地计算机的“个人”证书存储区和“受信任的根证书存储区”。如果您有一个单独的“受信任的根证书存储区”和“个人”证书存储区,则需要分别添加它们,即把“个人”证书添加到“个人”证书存储区,把 CA 根证书添加到“受信任的根证书存储区”。对于非双向 TLS,请配置服务器证书。客户端必须信任颁发服务器证书的证书颁发机构。对于双向 TLS,请同时配置服务器和客户端证书。服务器必须信任客户端证书的颁发机构,客户端也必须信任服务器证书的颁发机构。

注意:

NCache 将自动使用存储在证书存储中的证书。 当在正确的用户帐户下启动时, NCache 服务将自动识别并使用适当证书存储中的相关证书。

注意:

如果您不想从 Bridge 和 Server 节点运行客户端,则无需在 Bridge 和 Server 节点上安装客户端证书。

如果您有单独的根证书和个人证书,则需要分别添加它们。

对于非双向 TLS,请配置服务器证书。对于双向 TLS,请同时配置服务器和客户端证书。客户端的颁发者证书必须存在于服务器的机器存储区中,同样,客户端的机器存储区中也必须包含服务器的颁发者证书。

注意:

当客户端-服务器通信启用双向TLS时, NCache 连接到缓存服务器的工具必须使用已配置的客户端证书。

注意:

从 5.3 SP5 及更高版本,客户端和服务器可以有不同的证书。

TLS证书选择和身份验证

服务器选择证书

在 Windows 系统中,服务器启动时会从注册表中读取已配置的证书指纹。它会检查本地计算机和当前用户的“受信任的根证书颁发机构”存储区,然后检查本地计算机和当前用户的个人证书颁发机构存储区。服务器会选择找到的第一个匹配证书。随后,服务器会通过指纹读取该证书并将其共享给客户端,从而实现安全通信。

在Linux系统中,如果找不到已配置的证书,则 My 商店, NCache 同时搜索 根源 存储。

客户选择证书

当客户端与服务器通信启用双向 TLS 时,客户端会将配置的客户端证书提交给服务器进行身份验证。

双向TLS身份验证

对于双向客户端-服务器TLS协议,客户端会向服务器提供其配置的证书。服务器必须信任颁发客户端证书的证书颁发机构。

对于相互服务器间的 TLS,连接服务器必须提供有效的证书,并且每个服务器都必须信任颁发其他服务器所用证书的证书颁发机构。

如何配置 TLS 加密

要配置 TLS 加密,请参阅下文。

  • Windows
  • Linux

要在 Windows 计算机上安装 TLS 证书,应遵循以下步骤。

步骤 1 - 机器登录: 登录到您的机器。
步骤 2 - 创建自签名证书: 创建(您可以按照以下详细说明创建自签名证书) Microsoft WCF 证书文档)或获取包含可导出私钥的 TLS 证书。

重要提示
  • 您的证书必须由证书颁发机构 (CA) 授权。为了将其反映为配置的一部分,请确保基本约束部分指定 主题类型=CA ,在 证书详细信息。同样,您可以通过以下方式实现此目的 -TextExtension 具有值的属性 @("2.5.29.19={text}CA=true") 使用以下命令生成证书时: New-SelfSignedCertificate.
  • 我们不建议您使用自行生成的证书 最佳的 不过,您可以在测试环境中使用它们。

步骤 3 - 导入证书: 按照以下说明将证书导入到相应的机器中 微软证书安装指南.

步骤 4 - 打开 Microsoft 管理控制台: 媒体中心 WIN + R,类型 MMC,然后按 输入.

Microsoft 管理控制台 (MMC) 窗口显示“添加/删除管理单元”对话框

第五步 - 选择证书: 在 Microsoft 管理控制台 (MMC) 中, 文件 菜单上,单击 添加或删除管理单元。 选择 科瑞证书 从可用管理单元列表中,然后单击 添加 按钮。

从可用插件列表中选择证书

步骤 6 - 选择帐户: 从帐户类型中选择 我的用户帐户, 服务帐号和 电脑帐号。 您可以选择一个 我的用户帐户 或本地计算机,具体取决于您放置证书的位置。

从“我的用户帐户”、“服务帐户”和“计算机帐户”中选择帐户类型。

步骤 7 - 找到证书: 在左侧窗格中 MMC卡,扩大 科瑞证书 并导航 当前用户 > 个人 > 证书 找到列出的 TLS 证书 客户端认证 作为 预期目的 并双击。要了解证书放置信息,请参阅 证书放置的注意事项.

找到将客户端身份验证列为预期用途的 TLS 证书。

请注意,您需要向已配置的用户帐户授予权限(除了机器管理员之外,其他人都不是机器管理员。)以访问证书的私钥。

  • 右键单击证书并选择: 所有任务 -> 管理私钥

gMSA证书权限

  • 在权限窗口中, 加 点击“添加”按钮,然后授予所需的用户帐户权限 阅读许可点击“申请”。

gMSA 权限私钥

注意:

如果您配置的用户帐户没有访问证书私钥的权限, NCache 客户端在安全通信初始化期间无法检索证书,导致 TLS 握手失败和运行时异常。

步骤 8 - 获取指纹: 在证书对话框中,单击 信息 标签并找到 指纹点击它,然后复制框中的十六进制字符。如果证书指纹中包含冒号(“:”)或多余的空格,请将其删除。保存指纹,因为后续步骤需要用到它。

采集指纹

步骤 9 - 复制证书名称: 同样,复制 证书名称(中文) 点击 咨询内容 属性并仅复制后面的内容 CN= 在本例中为“示例”。请保存证书名称,因为后续步骤中需要用到。

复制并保存 CN 后面的证书名称。

步骤 10 - 验证服务是否正在运行: 确保 NCache 服务在用于导入证书的同一用户下运行。

第 11 步 - 启用 TLS 安全性: 使用以下 PowerShell Cmdlet 启用 TLS 安全。执行 启用-NCacheTLS 命令中,请务必指定在步骤8和9中保存的服务器的证书名称和指纹。同样,您可以按照上述步骤添加客户端证书。

此 Enable-NCacheTLS cmdlet 可用时 NCache 已安装在机器上。在客户端机器上 NCache 未安装,请通过以下方式手动配置 TLS: tls.ncconf 文件包含在 NCache NuGet软件包.

以下示例为客户端-服务器和服务器-服务器通信启用 TLS。

配置非双向TLS

非双向 TLS 加密客户端-服务器和服务器-服务器通信,而无需连接的客户端或服务器提供客户端证书。

Enable-NCacheTLS -Node "20.200.20.39,20.200.20.40" -ServerCertificateCN "Example" `
                 -ServerCertificateThumbprint "596846ab6bdd9edb03cdfbdfa1aa7b0b05e744a6" `
                 -ServerToServerCommunication -ClientServerCommunication

对于普通的TLS(无需相互 TLS 连接),则 tls.ncconf 包含以下标签:

<tls-info>
 <server-certificate-cn>certificate-name</server-certificate-cn>
 <server-certificate-thumbprint>your-thumbprint</server-certificate-thumbprint>
 <client-certificate-cn></client-certificate-cn>
 <client-certificate-thumbprint></client-certificate-thumbprint>
 <enable>true</enable>
 <enable-client-server-tls>true</enable-client-server-tls>
 <enable-server-to-server-tls>true</enable-server-to-server-tls>
 <use-mutual-tls-for-client-to-server>false</use-mutual-tls-for-client-to-server>
 <use-mutual-tls-for-server-to-server>false</use-mutual-tls-for-server-to-server>
 <protocol-version>tls12</protocol-version>
</tls-info>

配置相互 TLS

双向TLS需要服务器端和客户端都拥有证书。每一方都会对另一方提供的证书进行验证。

Enable-NCacheTLS -Node "20.200.20.39,20.200.20.40" -ServerCertificateCN "Example" `
                 -ServerCertificateThumbprint "596846ab6bdd9edb03cdfbdfa1aa7b0b05e744a6" `
                 -ClientCertificateCN "MyClientCert" `
                 -ClientCertificateThumbprint "1234567890EFGHIJKL" `
                 -ServerToServerCommunication -ClientServerCommunication `
                 -UseMutualTLSForClientToServer True -UseMutualTLSForServerToServer True

对于双向TLS, tls.ncconf 包含以下标签:

<tls-info>
 <server-certificate-cn>certificate-name</server-certificate-cn>
 <server-certificate-thumbprint>your-thumbprint</server-certificate-thumbprint>
 <client-certificate-cn>certificate-name</client-certificate-cn>
 <client-certificate-thumbprint>your-thumbprint</client-certificate-thumbprint>
 <enable>true</enable>
 <enable-client-server-tls>true</enable-client-server-tls>
 <enable-server-to-server-tls>true</enable-server-to-server-tls>
 <use-mutual-tls-for-client-to-server>true</use-mutual-tls-for-client-to-server>
 <use-mutual-tls-for-server-to-server>true</use-mutual-tls-for-server-to-server>
 <protocol-version>tls12</protocol-version>
</tls-info>

有关在不同场景下启用 TLS 的更多示例,请查看 启用-NCacheTLS 页面。

注意:

如果 ProtocolVersion 上述命令未提供参数,则使用的默认协议是 TLS 1.2的.

重要提示

确保所有服务器和客户端节点上的配置值一致,以保证集群的连通性和同质性。

步骤 12 - 重启服务和进程: 设置所需的属性后,重新启动缓存、客户端进程,然后 NCache 服务。 确保 NCache 服务在用于导入证书的同一用户下运行。

要在 Linux 计算机上安装 TLS 证书,应遵循以下步骤。 请记住,以下步骤是使用 Ubuntu 执行的,如果您使用 Fedora、Red Hat 等,则可能会有所不同。

步骤 1 - 机器登录: 登录到您的机器。
步骤 2 - 创建自签名证书: 创建(您可以按照以下详细说明创建自签名证书) OpenSSL 文档)或获取包含可导出私钥的 TLS 证书。
您可以通过运行以下命令来完成此操作 创建一个自签名证书 使用 OpenSSL:

openssl req -new -x509 -days 365 -keyout ncachetest-private-key.pem -out ncachetest-certificate.crt -addext "basicConstraints=critical,CA:TRUE"

这将创建两个文件:ncachetest-private-key.pem(私钥)和ncachetest-certificate.crt(证书)。

重要提示
  • 证书必须具备 基本约束 扩展设置为 CA:TRUE。 该 -addext "basicConstraints=critical,CA:TRUE" 参数应用了与 Windows 等效的 Linux/OpenSSL。 CA=true 证书财产。
  • 我们不建议您使用自行生成的证书 最佳的 不过,您可以在测试环境中使用它们。

步骤 3 - 创建 pfx 文件: 要在以下位置使用 TLS: NCache, 你需要一个 .pfx 文件。如果您已经有 .crt 和 .pem 文件,这里是你可以如何 创建.pfx文件:

openssl pkcs12 -export -out ncachetest-certificate.pfx -inkey ncachetest-private-key.pem -in ncachetest-certificate.crt

第四步 - 获取指纹和证书名称: 获取 指纹/指纹 和 证书名称 运行以下命令,并删除证书指纹中的任何冒号(“:”)或多余空格(如有)。保存证书名称和指纹,因为后续步骤需要用到它们。

openssl x509 -noout -in ncachetest-certificate.crt -fingerprint -subject | sed 's/://g'

步骤 5 - 在服务器上安装受信任证书: 如果客户端-服务器或服务器-服务器通信启用了双向 TLS,则每个服务器都必须信任连接客户端或服务器所提供证书的颁发机构。请按如下方式在系统信任存储区安装相应的根 CA 证书:

  • 创建一个目录来存储需要在系统范围内应用的证书。 例如:
sudo mkdir -p /usr/local/share/ca-certificates/
  • 将证书复制到这个新创建的目录中。
sudo cp ncachetest-certificate.crt /usr/local/share/ca-certificates/
  • 通过以下命令更新系统的证书存储:
sudo update-ca-certificates

步骤 6 - 部署证书: 使用 安装 pfx 证书 PowerShell cmdlet,用于将 PFX 证书导入到 NCache 证书存储。在 Linux 系统下启动 PowerShell。 ncache 用户,或者在运行该程序的用户帐户下 NCache 启动服务,然后执行 cmdlet。

默认情况下,该 cmdlet 会将证书安装到…… 根源 商店:

install-pfxcertificate -filepath "/home/ncache/ncachetest-certificate.pfx" -password "pass123"

要将证书安装到 My 商店,指定 -StoreName My 参数:

install-pfxcertificate -filepath "/home/ncache/ncachetest-certificate.pfx" -password "pass123" -StoreName My
注意:

安装 pfx 证书 是一个 NCache PowerShell cmdlet,并且可用 NCache 已安装。以与安装时相同的用户帐户运行它。 NCache 服务运行是为了能够访问已安装的证书。

第 7 步 - 启用 TLS 安全性:

  • 使用 PowerShell cmdlet: 使用以下内容 PowerShell 命令 启用 TLS 安全。要了解有关此处使用的属性的更多信息,请参阅下面讨论的证书元素。当执行 enable-ncachetls 命令,请确保指定在安装证书期间在步骤 4 中保存的客户端和服务器的相应证书名称和指纹。
重要提示

此 enable-ncachetls 该命令已安装。 NCache 否则无法使用。如果您的客户端机器没有 NCache 安装完成后,您需要使用以下命令手动启用 TLS: tls.ncconf 文件可通过以下方式获取: NCache NuGet 和 Maven 包。

以下示例为客户端-服务器和服务器-服务器通信启用 TLS。

配置非双向TLS

非双向 TLS 加密客户端-服务器和服务器-服务器通信,而无需连接的客户端或服务器提供客户端证书。

当需要使用以下 PowerShell 命令时 NCache 已安装:

enable-ncachetls -node "20.200.20.39,20.200.20.40" -servercertificatecn "Example" `
                 -servercertificatethumbprint "596846ab6bdd9edb03cdfbdfa1aa7b0b05e744a6" `
                 -servertoservercommunication -clientservercommunication

否则,请使用以下方法 tls.ncconf 配置:

<tls-info>
  <server-certificate-cn>certificate-name</server-certificate-cn>
  <server-certificate-thumbprint>your-thumbprint</server-certificate-thumbprint>
  <client-certificate-cn></client-certificate-cn>
  <client-certificate-thumbprint></client-certificate-thumbprint>
  <enable>true</enable>
  <enable-client-server-tls>true</enable-client-server-tls>
  <enable-server-to-server-tls>true</enable-server-to-server-tls>
  <use-mutual-tls-for-client-to-server>false</use-mutual-tls-for-client-to-server>
  <use-mutual-tls-for-server-to-server>false</use-mutual-tls-for-server-to-server>
  <protocol-version>tls12</protocol-version>
</tls-info>

配置相互 TLS

双向TLS需要服务器端和客户端都拥有证书。每一方都会对另一方提供的证书进行验证。

当需要使用以下 PowerShell 命令时 NCache 已安装:

enable-ncachetls -node "20.200.20.39,20.200.20.40" -servercertificatecn "Example" `
                 -servercertificatethumbprint "596846ab6bdd9edb03cdfbdfa1aa7b0b05e744a6" `
                 -clientcertificatecn "MyClientCert" -clientcertificatethumbprint "1234567890EFGHIJKL" `
                 -servertoservercommunication -clientservercommunication `
                 -usemutualtlsforclienttoserver true -usemutualtlsforservertoserver true

否则,请使用以下方法 tls.ncconf 配置:

<tls-info>
  <server-certificate-cn>certificate-name</server-certificate-cn>
  <server-certificate-thumbprint>your-thumbprint</server-certificate-thumbprint>
  <client-certificate-cn>certificate-name</client-certificate-cn>
  <client-certificate-thumbprint>your-thumbprint</client-certificate-thumbprint>
  <enable>true</enable>
  <enable-client-server-tls>true</enable-client-server-tls>
  <enable-server-to-server-tls>true</enable-server-to-server-tls>
  <use-mutual-tls-for-client-to-server>true</use-mutual-tls-for-client-to-server>
  <use-mutual-tls-for-server-to-server>true</use-mutual-tls-for-server-to-server>
  <protocol-version>tls12</protocol-version>
</tls-info>

对于 Java 客户端,请在结束标签之前添加以下元素 </tls-info> 元素。这些元素指定包含客户端证书及其密码的 PFX 文件。对于 .NET 客户端,这些元素不是必需的,因为 NCache 自动解析已安装的证书。

<pfx-path>/path/to/pfx-file</pfx-path>
<pfx-password>pfx-file-password</pfx-password>
注意:

如果 ProtocolVersion 上述命令未提供参数,则使用的默认协议是 TLS 1.2的.

重要提示

确保所有服务器和客户端节点上的配置值一致,以保证集群的连通性和同质性。

步骤 8 - 重启服务和进程: 设置所需的属性后,重新启动缓存、客户端进程,然后 NCache 服务。 确保 NCache 服务在用于导入证书的同一用户下运行。

注意:

启用证书后,请确保:

  • 此 NCache 服务在用于导入证书的同一用户下运行。
  • 所有客户端应用程序都在 64 位机器上运行。

通过 TLS 验证成功的客户端连接

为了通过 TLS 验证客户端连接是否成功,您可以运行 测试压力 使用 PowerShell cmdlet。以下示例对名为“Test-Stress”的缓存运行 Test-Stress 命令。 演示缓存.

Test-Stress -CacheName demoCache

您还可以使用 Microsoft 网络监视器来验证这一点。 如果启用了 TLS, 协议名称 过程的 PowerShell的 运行此命令时 TLS.

注意:

UseMutualTLSForClientToServer, EnableBridgeTLS, EnableClientServerTLS, EnableServerToServerTLS和 UseMutualTLSForServerToServer 如果 Enable 尚未设置为 true tls.ncconf,无论它们是否已单独启用。

故障排除

由于以下原因,通过 TLS 的客户端连接可能会失败:

  • 如果注册表项丢失,连接可能会失败。 确保所有条目都在注册表中创建。
  • 如果 NCache 如果服务运行在与安装证书所用帐户不同的用户帐户下,则服务可能无法访问证书。
  • 如果配置的证书指纹不正确或与已安装的证书不匹配,则连接失败。
  • 如果客户端的可信根没有服务器的CA。
  • If UseMutualTLSForClientToServer or UseMutualTLSForServerToServer 为 true 并且服务器的受信任根没有客户端或其他服务器的 CA。
  • 如果客户端和服务器计算机中的属性值不同,您会收到一条错误消息“解密操作失败”。

参见

为缓存配置安全性
为缓存配置加密

联系我们

联系电话

+1 214-619-2601   (美国)

+44 20 7993 8327   (英国)

 
邮箱地址

sales@alachisoft.com

support@alachisoft.com

NCache
  • 版本比较
  • NCache 卓越
  • 基准
下载
定价
尝试游乐场

部署
  • 云(SaaS 和软件)
  • 内部部署
  • Kubernetes
  • Docker
技术用例
  • ASP.NET 会话
  • ASP.NET Core 会话
  • 发布/订阅消息
  • 实时 ASP.NET SignalR
  • 物联网(IOT)
  • NoSQL 数据库
  • 流处理
  • 微服务
相关资源
  • 杂志文章
  • 第三方文章
  • 专题文章
  • 视频
  • 白皮书
  • 作品
  • 会谈
  • 博客
  • 文档
客户案例研究
  • 评价
  • 客户
支持
  • 安排演示
  • 论坛(谷歌组)
  • 小技巧
关于我们
  • 领导团队
  • 合作伙伴
  • 新闻
  • 活动
  • 加入我们
联系我们

  • 英语简体中文法语版德语版意大利语版日语版韩语版葡萄牙语西班牙语

  • 联系我们
  •  
  • 网站地图
  •  
  • 使用条款
  •  
  • 隐私政策
©版权所有 Alachisoft 2002 - 版权所有。 NCache 是 Diyatech Corp. 的注册商标。
Back to top