您当前的位置:   首页 > 新闻中心
使用 Luna HSM 了解和生成证书签名请求 (CSR)
发布时间:2023-07-03 11:06:01   阅读次数:

image.png

证书签名请求 (CSR)在网络安全和加密中至关重要。它们是从证书颁发机构 (CA)获取安全套接字层 (SSL) 或传输层安全性 (TLS)证书的过程中不可或缺的一部分。本博客将指导您了解和生成 CSR,强调其在维护网络安全方面的重要性。


什么是 CSR?

当向证书颁发机构请求 SSL 证书时,会发送称为证书签名请求的加密文本块。它通常在将安装证书的服务器上生成。它包含证书中的信息,例如组织名称、通用名称(域名)、地点和国家。此外,它还包括将用于签署证书的公钥。


为什么 CSR 很重要?

CSR 充当请求SSL 证书的实体和颁发该证书的 CA 之间的管道。通过生成 CSR,您将创建两个基本项目。第一个是公钥,它包含在 CSR 中。第二个是私钥,与 CSR 同时生成并保留在您的服务器上。私钥必须保密,因为一旦 SSL 证书运行,它允许服务器对信息进行身份验证和解码。


Thales Luna Cloud HSM 概述:特性和优势

Luna Cloud HSM 是Thales(泰雷兹)提供的硬件安全模块 (HSM) 。“Cloud HSM”部分表示它是基于云的产品。您可以通过 Internet 将其作为服务进行访问,而无需在数据中心实际安装和管理 HSM。Luna Cloud HSM 是 Thales 提供的 CipherTrust Cloud Key Manager 服务的一部分。


HSM 是一种专用硬件设备,具有专门的加密处理器,旨在管理数字密钥和执行加密操作。它们提供了一个安全的环境,您可以在其中生成、管理和使用加密密钥,使它们与其他系统部分隔离以增强安全性。HSM 通常用于保护组织最敏感的数字资产。


Luna Cloud HSM 将云的优势带入 HSM 世界 – 可扩展性、可访问性和更低的前期成本。您可以获得传统 HSM 的安全性以及云服务的附加优势。


Luna Cloud HSM的主要特点是:

  1. 强大的安全性

    Luna Cloud HSM 利用泰雷兹强大的加密和密钥管理功能,提供最高的云数据保护级别之一。HSM 具有防篡改功能,可为加密操作提供安全的环境。


  2. 可扩展性

    随着您的加密需求的增长,Luna Cloud HSM 可以轻松地随之扩展。您不必担心购买和安装额外的 HSM 硬件。


  3. 高可用性

    Luna Cloud HSM 提供高可用性和自动故障转移功能,确保业务连续性。您可以跨多个区域部署 HSM 以缓解本地中断。


  4. 合规性遵守

    Luna Cloud HSM 可帮助您满足与加密操作和密钥管理相关的监管标准,包括 PCI-DSS、GDPRHIPAA。该服务具有全面的审计和日志记录功能。


  5. 互操作性

    Luna Cloud HSM 支持广泛的加密 API、库和集成,例如 PKCS#11、Java (JCE)、Microsoft CryptoAPI 和 Microsoft CNG,使其与广泛的应用程序和服务兼容。


如何生成 CSR?

生成 CSR 可能会有所不同,具体取决于您使用的软件,但核心步骤保持不变。以下是该过程的概要:


  1. 准备

    在生成 CSR 之前,您必须掌握所有相关详细信息。这包括您的域名、组织名称、地点(城市)、州或省名称以及国家/地区代码。


  2. 生成密钥对

    生成 CSR 的第一步是创建公钥-私钥对。请记住,您的私钥应安全地保存在它生成的服务器或硬件模块中。


  3. 生成 CSR

    使用与您的服务器软件相匹配的 CSR 生成工具。该工具将要求您提供步骤 1 中准备的详细信息以及步骤 2 中生成的私钥。然后,该工具会生成扩展名为 .csr 或 .req 的编码文件。


在 CSR 生成过程中,系统将提示您输入详细信息(通用名、组织、地点等)。


Luna HSM 生成 CSR

我们将在Thales DPoD 上生成 CSR。因此,首先,我们需要进行应用程序所有者配置,这意味着添加和配置客户端。


客户端安装使用 .zip (Windows) 或 .tar (Linux) 来提供配置系统与Luna Cloud HSM 服务的连接所需的客户端材料。客户端 .zip 包括预配置的 crypto-template.ini 文件和包含库和二进制文件的客户端存档文件。


安装服务客户端
  • 访问服务页面并单击要生成客户端的服务或分区名称。

    image.png

  • 单击新建服务客户端– 将显示创建服务客户端窗口。

    image.png

  • 在“创建服务客户端”窗口中,输入客户端名称(例如,Pega-Macro)并选择“创建服务客户端”。

    image.png

配置已安装的服务客户端
  • 生成一个新客户端(在本例中为setup-PKI-Luna.zip)并提供下载并安装在您的客户端计算机上。
  • 客户端是一个 zip 文件,其中包含将计算机连接到 HSM 分区所需的系统信息。有关客户端内容的详细信息,请参阅客户端内容部分。
  • 将客户端传输到您的计算机。您可以通过SCP、PSCP、WinSCP、FTPS或其他安全工具传输客户端。
  • 使用 Windows GUI 或解压缩工具解压缩文件 – setup-PKI-Luna.zip。
  • 解压 cvclient-min.zip。
  • 将 cvclient-min.zip 解压到您在上一步中创建的目录中。步骤 7 中的 setenv 命令需要此位置。请勿解压缩到新的 cvclient-min.zip 目录。
  • 设置环境变量。打开管理员命令提示符 – 右键单击命令提示符并选择以管理员身份运行。在管理员命令提示符中执行以下命令:

    image.png

配置 SafeNet 密钥存储提供程序 (KSP)
  • 系统需要访问 SafeNet 密钥存储提供商 (KSP)。将 SafeNetKSP.dll 文件从下载的 Luna Cloud HSM 服务客户端复制到C:\\Windows\System32。

    注意:如果未能复制 SafeNetKSP.dll 文件,将导致在集成期间无法访问 SafeNet 密钥存储提供程序。例如,如果配置 Microsoft Active Directory 证书服务,则在设置 CA 加密时,SafeNet 密钥存储提供程序将不可用。


  • 运行 KspConfig.exe
  • 导航到 KSP 安装目录。
  • 双击注册或查看安全库。
  • 单击“浏览”。从 Luna Cloud HSM 服务客户端中选择cryptoki.dll文件。

    单击注册。

    image.png

  • 注册成功,即成功!显示消息。单击“确定”。

    image.png

  • 双击注册 HSM 插槽。
  • 为管理员用户注册HSM。为此,打开“注册用户”下拉菜单并选择“管理员”;打开域下拉菜单并选择您的域。打开可用插槽下拉菜单,选择服务标签,输入插槽密码,然后单击注册插槽。

    image.png

  • 注册成功,即成功!显示消息。单击“确定”。

    image.png

  • 为系统用户注册HSM。打开“注册用户”下拉菜单,然后选择“系统”、“域”下拉菜单和“NT AUTHORITY”。打开可用插槽下拉菜单,选择服务标签,输入插槽密码,然后单击注册插槽。

    image.png
  • 注册成功,即成功!显示消息。单击“确定”。

    image.png

在服务客户端中生成 CSR

  • 创建名为request.inf的文件并填写以下详细信息,以生成连接到RSA密钥的 SSL 证书的请求。内容是:


  • 		[Version]
    Signature = "$Windows NT$"
    [NewRequest]
    Subject = "C=US, S=Dallas, L=Texas, O=Encryption Consulting LLC, OU=Dev, e=subhayu@encryptionconsulting.com, 
    CN=ECIssued
    "
    HashAlgorithm = SHA256
    KeyAlgorithm = RSA
    KeyLength =2048
    ProviderName = "Safenet Key Storage Provider"
    KeyUsage = 0xf0
    MachineKeySet =True
    [EnhancedKeyUsageExtension]
    OID=1.3.6.1.5.5.7.3.

    image.png

  • 注意:主体的通用名 (CN) 是为此请求任意选择的,并且可能会更改。


    参数为:

    • C –定义证书请求的可分辨主题名称 (DN) 的两个字母的国家/地区名称。此参数应存在于主题 DN 中。
    • S –定义证书请求的可分辨主题名称 (DN) 的状态名称。此参数应存在于主题 DN 中。
    • L –定义证书请求的可分辨主题名称的位置(通常是城市)。该参数可能存在于主题 DN 中。
    • O –定义证书请求的可分辨主题名称 (DN) 的组织名称。此参数应存在于主题 DN 中。
    • OU –定义证书请求的可分辨主题名称 (DN) 的组织单位名称。该参数可能存在于主题 DN 中。
    • e –是证书颁发机构的官方或联系电子邮件地址。
    • CN –定义证书请求的可分辨主题名称 (DN) 的通用名称。此参数应存在于主题 DN 中。
    • 签名

      “$Windows NT$”指定 INF 文件适用于 Windows NT 和更高版本的 Windows。

    • 主题

    • 哈希算法

      SHA256 将哈希算法设置为 SHA256,一个标准且安全的选择。

    • 密钥算法

      RSA将密钥算法设置为广泛使用的公钥算法RSA。

    • 密钥长度

      2048 将密钥长度设置为 2048 位。这是 RSA 密钥的当前行业标准。

    • 提供商名称

      “SafeNet Key Storage Provider”表示要使用的加密服务提供商(CSP)。CSP是一个实现加密功能的软件库。在这种情况下,使用 SafeNet 密钥存储提供程序。


    • 密钥使用

      0xf0 指定证书中密钥的用途。十六进制值 0xf0 对应于二进制值 11110000,它代表数字签名 (0x80)、密钥加密 (0x20)、数据加密 (0x10) 和密钥协议 (0x08) 密钥用法。


    • 机器密钥组

      True 表示私钥存储在本地计算机的证书存储中,而不是当前用户的证书存储中。


    • 增强型密钥使用扩展

      OID=1.3.6.1.5.5.7.3.1 是指定证书用途的对象标识符 (OID)。OID 1.3.6.1.5.5.7.3.1 代表“服务器身份验证”,这意味着该证书用于在 SSL/TLS 通信中对服务器进行身份验证。


  • 以管理员身份打开一个新的命令提示符窗口。您可以通过在“开始”菜单中搜索“cmd”,右键单击命令提示符,然后选择“以管理员身份运行”来执行此操作。
  • 导航到requested.inf 所在的路径并按Enter 键。
  • 现在,使用以下命令生成证书请求:


    certreq -new request.inf request.req



    image.png

    此命令将根据“request.inf”文件中的配置创建一个名为“request.req”的新证书签名请求(CSR)文件。您可以将此 CSR 文件发送给您的 SSL 证书的证书颁发机构 (CA)。

使用 Microsoft CA 签署 CSR

签署 CSR 有两种不同的方式:


接受证书请求
  • 将 CSR 文件传输到颁发 CA 并执行命令 –


    certreq -submit -attrib "CertificateTemplate:<Template Name>" "C:\MacroSign.csr"


    此处,模板名称 =“EncryptionConsuCodeSigning”

    image.png

  • 从证书颁发机构列表中选择证书颁发机构后,使用适当的名称保存证书。(例如,= ECMacro,扩展名应为 .crt 或 .cer)

    image.png

  • 成功执行后,您将在证书颁发机构的已颁发证书中找到该证书

    image.png

  • 检查新生成的证书的增强密钥使用属性中是否包含“代码签名” 。

    image.png

通过网络报名
  • 证书颁发机构中的可用模板

    image.png

  • 现在,选择模板后执行 Web 注册 - “代码签名”。

    image.png

  • 选择请求证书后,将出现此屏幕。选择“高级证书请求”。

    image.png

  • 将 CSR 的内容粘贴到“保存的请求”中,然后在“证书”模板中选择“代码签名”。之后,点击提交。

    image.png

  • 这将提示两个选项 -下载证书和下载证书链。选择后一种并将链下载到您的本地系统。

    image.png


  • 这就是证书链的样子。

    image.png

将私钥添加到证书中

  • 接受并安装在 Windows 环境中可用的证书。

    image.png

  • 接下来,使用命令 将证书添加到证书 - 本地计算机的“个人”证书中 -


    certutil -store MY “<thumbprint of the certificate>”


    image.png

故障排除

  • 要检查颁发 CA 中存在的 CA 模板列表 –


    certutil -CATemplates


    image.png

  • 如果私钥未附加到证书,请尝试此“repairstore”命令

    image.png

  • Windows 中的CSP/KSP 注册失败。


    如果 Windows 更新缺失,CSP/KSP 注册可能会失败,因为它包括验证 DLL 是否由泰雷兹证书签名的步骤,该证书链接回 DigiCert 信任根 G4(符合行业安全标准)。


    仅当您的 Windows 操作系统具有所需的证书时,此步骤才能成功。如果您的 Windows 操作系统已更新,您应该已经拥有该证书。


    如果您的 Luna HSM 客户端主机已连接到互联网,请使用以下命令手动更新证书:


    certutil -urlcache -f http://cacerts.digicert.com/DigiCertTrustedRootG4.crt DigiCertTrustedRootG4.crt
    certutil -addstore -f root DigiCertTrustedRootG4.crt



    手动更新未连接的主机

    • 将 DigiCert Trusted Root G4 ( http://cacerts.digicert.com/DigiCertTrustedRootG4.crt DigiCertTrustedRootG4.crt ) 下载到单独的连接互联网的计算机。
    • 使用您批准的方式将证书传输到 Luna 客户端主机上您选择的 <下载的证书路径> 位置
    • 使用以下命令将证书添加到证书存储区:


      certutil -addstore -f root <downloaded cert path>


  • 如果证书请求中的主题未显示在证书上,请尝试以下步骤。


    要求使用此模板的证书应包括您配置的“密钥用法”和“增强型密钥用法”字段。

    • 打开证书模板控制台:在 AD CS 服务器上,通过从“运行”对话框 (Win + R) 运行“certtmpl.msc”来打开证书模板控制台。
    • 复制现有模板:复制现有模板而不是修改模板通常是一个好主意。找到与您想要的模板类似的模板,右键单击它,然后选择“复制模板”。
    • 配置模板:在新模板的属性对话框中,您可以配置各种设置。要设置“密钥用法”和“增强型密钥用法”字段:

      密钥用法:转到“扩展”选项卡,在列表中选择“密钥用法”,然后单击“编辑”。在这里您可以选择要包含的密钥用法,例如“数字签名”、“密钥加密”、 ETC。

      增强的密钥用法:仍然在“扩展”选项卡上,选择“应用程序策略”并单击“编辑”。在这里您可以添加要包含的增强的密钥用法,例如“代码签名”、“服务器身份验证”等。

    • 保存模板:根据您的喜好配置模板后,为其命名并保存。
    • 下发模板:新模板现已可用,但需要下发后才能使用。在证书颁发机构控制台 (`certsrv.msc`) 中,右键单击“证书模板”,选择“新建”,然后选择“要颁发的证书模板”,然后选择新模板。

结论

一旦生成,CSR 可用于从证书颁发机构寻求 SSL 证书。CSR的数据将被CA用来构建证书,确保您网站的安全和信息传输的安全。


尽管程序和协议可能看起来很困难,但使用 SSL 证书来保护您的网站对于获得访问者的信任和保护关键信息至关重要。CSR 对于确保 SSL 证书中包含正确的数据至关重要。


揽阁信息可提供的部分安全产品和解决方案信息

联系揽阁信息,您可以获取到更多满足全球合规性要求的信息安全产品资料,以及相关的整体解决方案的相关资料。如:


您还可以得到揽阁信息所提供的优质服务。

揽阁信息 · 值得您信赖的信息安全顾问!


相关阅读

购买咨询电话
021-54410609