Citrix ADC

创建证书

证书颁发机构 (CA) 是颁发用于公钥加密的数字证书的实体。执行 SSL 事务的应用程序(如 Web 浏览器)信任 CA 颁发或签名的证书。这些应用程序维护他们信任的 CA 的列表。如果任何受信任的 CA 签署了用于安全事务的证书,应用程序将继续处理该事务。

警告: Citrix 建议您对所有 SSL 事务使用从授权 CA(例如威瑞信)获取的证书。在 Citrix ADC 设备上生成的证书仅用于测试目的,而不是在任何实时部署中使用。

要导入现有证书和密钥,请参阅导入证书

执行以下步骤创建证书并将其绑定到 SSL 虚拟服务器。文件名中唯一允许的特殊字符是下划线和点。

  • 创建私钥。
  • 创建证书签名请求 (CSR)。
  • 将 CSR 提交给证书颁发机构。
  • 创建证书密钥对。
  • 将证书密钥对绑定到 SSL 虚拟服务器

下图说明了端到端流程。

端到端流

创建私钥

注意

  • 从 12.1 版本 49.x 中,您可以使用带 PEM 密钥格式的 AES256 算法来加密设备上的私有密钥。与数据加密标准 (DES) 的 56 位密钥相比,具有 256 位密钥的 AES 在数学上更高效和安全。

  • 从版本 12.1 版本 50.x 中,您可以创建 PKCS #8 格式的 RSA 或 DSA 密钥。

私钥是数字证书中最重要的部分。根据定义,此密钥不能与任何人共享,必须安全地保存在 Citrix ADC 设备上。使用公钥加密的任何数据只能通过使用私钥解密。

您从 CA 接收的证书仅对用于创建 CSR 的私钥有效。将证书添加到 Citrix ADC 设备时需要密钥。

该设备支持两种加密算法,即 RSA 和 DSA,用于创建私钥。您可以向证书颁发机构 (CA) 提交任一类型的私钥。您从 CA 接收的证书仅对用于创建 CSR 的私钥有效。将证书添加到 Citrix ADC 设备时需要密钥。

重要:

  • 请确保限制对私钥的访问权限。任何有权访问您的私钥的人都可以解密您的 SSL 数据。
  • 如果密钥名称中包含路径,则允许的 SSL 密钥名称的长度包括绝对路径名称的长度。

所有 SSL 证书和密钥都存储在设备上的 /nsconfig/ssl 文件夹中。为了增强安全性,您可以使用 DES 或三重 DES (3DES) 算法对存储在设备上的私钥进行加密。

使用 CLI 创建 RSA 私钥

在命令提示窗口中,键入:

create ssl rsakey <keyFile> <bits> [-exponent ( 3 | F4 )] [-keyform (DER | PEM )] [-des | -des3 | -aes256] {-password } [-pkcs8]

示例:

create rsakey testkey 2048 -aes256 -password 123456 -pkcs8

通过使用 GUI 创建 RSA 私钥

  1. 导航到流量管理”>“SSL”

  2. SSL 密钥 组中,选择 创建 RSA 密钥

    创建 RSA 密钥

  3. 输入以下参数的值,然后单击 创建

    • 密钥文件名 -RSA 密钥文件的名称和路径(可选)。/nsconfig/ssl/ 是默认路径。
    • 密钥大小 -RSA 密钥的大小(以位为单位)。可以从 512 位到 4096 位。
    • 公共指数值 -RSA 密钥的公共指数。指数是密码算法的一部分,是创建 RSA 密钥所必需的。
    • 密钥格 式-设备上存储 RSA 密钥文件的格式。
    • PEM 编码算法 -使用 AES 256、DES 或三重 DES (DES3) 算法对生成的 RSA 密钥进行加密。
    • PEM 密码 -(可选)输入密码短语。

    输入值

使用 GUI 在 RSA 密钥中选择 AES256 编码算法

  1. 导航到流量管理”>“SSL”>“SSL 文件”>“创建 RSA 密钥

  2. 密钥格式中,选择 PEM

  3. PEM 编码算法中,选择 AES256

  4. 选择 PKCS8

使用 CLI 创建 DSA 私钥

在命令提示窗口中,键入:

create ssl dsakey <keyfile> <bits> [-keyform (DER | PEM)] [-pkcs8]

示例:

create ssl dsakey Key-DSA-1 2048 -keyform PEM

通过使用 GUI 创建 DSA 私钥

  1. 导航到流量管理”>“SSL”,然后在SSL 密钥组中选择创建 DSA 密钥,然后创建 DSA 密钥。
  2. 要以 PKCS #8 格式创建密钥,请选择 PKCS8

在证书签名请求中支持 SHA 256 摘要算法

证书签名请求 (CSR) 是信息的集合。它包括域名、其他重要的公司详细信息以及用于创建证书的公钥。要避免生成无效证书,请确保您提供的详细信息准确无误。

Citrix ADC 设备默认支持创建使用 SHA1 摘要算法签名的 CSR。在早期版本中,要创建使用 SHA256 摘要算法签名的 CSR,您必须使用 OpenSSL。

设备支持创建使用 SHA256 摘要算法签名的 CSR。SHA256 中使用的加密哈希算法使其比 SHA1 更强。

使用 CLI 创建证书签名请求

在命令提示窗口中,键入:

create ssl certreq <reqFile> -keyFile <input_filename> | -fipsKeyName <string>) [-keyForm (DER | PEM) {-PEMPassPhrase }] -countryName <string> -stateName <string> -organizationName <string> -organizationUnitName <string> -localityName <string> -commonName <string> -emailAddress <string> {-challengePassword } -companyName <string> -digestMethod ( SHA1 | SHA256 )

示例:

create ssl certreq priv_csr_sha256 -keyfile priv_2048_2 -keyform PEM -countryName IN -stateName Karnataka -localityName Bangalore -organizationName Citrix -organizationUnitName NS -digestMethod SHA256

使用 GUI 创建证书签名请求

  1. 导航到流量管理”>“SSL”
  2. SSL 证书中,单击 创建证书签名请求 (CSR)

    创建证书签名请求

  3. 摘要 方法中,选择 SHA256

支持证书签名请求中的使用者备用名称

证书中的使用者备用名称 (SAN) 字段允许您将多个值(如域名和 IP 地址)与单个证书关联。换句话说,您可以使用一个证书来保护多个域名,例如:www.example.com、www.example1.com、www.example2.com 等。

某些浏览器(如 Google Chrome)不再支持证书签名请求 (CSR) 中的通用名称。他们在所有公开信任的证书中强制执行 SAN。

Citrix ADC 设备支持在创建 CSR 时添加 SAN 值。您可以将带有 SAN 条目的 CSR 发送到证书颁发机构,以获取具有 SAN 条目的签名证书。当设备收到请求时,它会检查服务器证书中的 SAN 条目中是否匹配的域名。如果找到匹配项,则会将证书发送到客户端并完成 SSL 握手。您可以使用 CLI 或 GUI 创建具有 SAN 值的 CSR。

注意:

Citrix ADC 设备仅处理基于 DNS 的 SAN 值。

使用 CLI 创建具有主题备用名称的 CSR

create ssl certReq <reqFile> (-keyFile <input_filename> | -fipsKeyName <string>) [-subjectAltName <string>] [-keyform ( DER | PEM )  {-PEMPassPhrase }] -countryName <string> -stateName <string> -organizationName <string> [-organizationUnitName <string>] [-localityName <string>] [-commonName <string>] [-emailAddress <string>] {-challengePassword } [-companyName <string>] [-digestMethod ( SHA1 | SHA256 )]

参数:

subjectAltName: 使用者备用名称 (SAN) 是 X.509 的扩展名,允许使用主题名称字段将各种值与安全证书关联。这些值称为“使用者备用名称”(SAN)。名称包括:

  1. IP 地址(前缀为“IP:”示例:IP:198.51.10.5 IP:192.0.2.100)

  2. DNS 名称(前缀为“DNS:”示例:DNS:www.example.com DNS:www.example.org DNS:www.example.net)

在 CLI 上,在引号中输入值。用空格分隔两个值。GUI 中不需要引号。 最大长度:127

示例:

create certReq test1.csr -keyFile test1.ky -countryName IN -stateName Kar -organizationName citrix -commonName ctx.com -subjectAltName "DNS:*.example.com DNS:www.example.org DNS:www.example.net"

注意:

在 FIPS 设备上,如果直接在设备上创建 FIPS 密钥,则必须将密钥文件名替换为 FIPS 密钥名称。

create certReq <csrname> -fipsKeyName fipskey.ky -countryName IN -stateName Kar -organizationName citrix -commonName ctx.com -subjectAltName "DNS:www.example.com DNS:www.example.org DNS:www.example.net"

通过使用 GUI 创建 CSR

  1. 导航到 流量管理 > SSL > SSL 文件
  2. CSR 选项卡中,单击 创建证书签名请求 (CSR)
  3. 输入值并单击 创建

限制

要在创建 SSL 证书时使用 SAN,必须显式指定 SAN 值。这些值不会自动从 CSR 文件读取。

向证书颁发机构提交 CSR

大多数证书颁发机构 (CA) 接受通过电子邮件提交的证书。CA 将向您提交 CSR 的电子邮件地址返回有效证书。

CSR 存储在 /nsconfig/ssl 文件夹中。

生成测试证书

注意: 要生成服务器测试证书,请参阅 生成服务器测试证书

Citrix ADC 设备具有内置 CA 工具套件,可用于创建用于测试的自签名证书。

注意: 由于 Citrix ADC 设备对这些证书进行签名,而不是实际的 CA,因此不能在生产环境中使用这些证书。如果您尝试在生产环境中使用自签名证书,用户每次访问虚拟服务器时都会收到“证书无效”警告。

设备支持创建以下类型的证书

  • 根 CA 证书
  • 中间证书
  • 最终用户证书
    • 服务器证书
    • 客户端证书

在生成证书之前,请创建一个私钥,然后使用它在设备上创建证书签名请求 (CSR)。然后,使用 Citrix ADC CA 工具生成证书,而不是将 CSR 发送到 CA。

使用向导创建证书

  1. 导航到流量管理”>“SSL”
  2. 在详细信息窗格的入门下,选择要创建的证书类型的向导。
  3. 按照屏幕上的说明进行操作。

使用 CLI 创建根 CA 证书

在命令提示符下,键入以下命令:

create ssl cert <certFile> <reqFile> <certType> [-keyFile <input_filename>] [-keyform ( DER | PEM )] [-days <positive_integer>]

在以下示例中,csreq1 是 CSR,rsa1 是之前创建的私钥。

示例:

create ssl cert cert1 csreq1 ROOT_CERT -keyFile rsa1 -keyForm PEM -days 365

  Done

使用 CLI 创建中间 CA 证书

create ssl cert <certFile> <reqFile> <certType> [-keyFile <input_filename>] [-keyform ( DER | PEM )] [-days <positive_integer>] [-certForm ( DER | PEM )] [-CAcert <input_filename>] [-CAcertForm ( DER | PEM )] [-CAkey <input_filename>] [-CAkeyForm ( DER | PEM )] [-CAserial <output_filename>]

在以下示例中,csr1 是之前创建的 CSR。Cert1 和 rsakey1 是该证书和自签名 (root-CA) 证书的相应密钥,pvtkey1 是中间 CA 证书的私钥。

示例:

create ssl cert certsy csr1 INTM_CERT -CAcert cert1 -CAkey rsakey1 -CAserial 23
Done

create ssl rsakey pvtkey1 2048 -exponent F4 -keyform PEM
Done

通过使用 GUI 创建根 CA 证书

导航到流量管理”>“SSL”,然后在“入门”组中选择根 CA 证书向导,然后配置根 CA 证书。

通过使用 GUI 创建中间 CA 证书

导航到流量管理”>“SSL”,然后在“入 门”组中选择“中间 CA 证书向导,然后配置中间 CA 证书。

创建最终用户证书

最终用户证书可以是客户端证书或服务器证书。要创建测试最终用户证书,请指定中间 CA 证书或自签名 Root-CA 证书。

注意:

要创建用于生产使用的最终用户证书,请指定受信任的 CA 证书并将 CSR 发送到证书颁发机构 (CA)。

使用命令行界面创建测试最终用户证书

create ssl cert <certFile> <reqFile> <certType> [-keyFile <input_filename>] [-keyform ( DER | PEM )] [-days<positive_integer>] [-certForm ( DER | PEM )] [-CAcert <input_filename>] [-CAcertForm ( DER | PEM )] [-CAkey<input_filename>] [-CAkeyForm ( DER | PEM )] [-CAserial <output_filename>]

如果没有中间证书,请在 CAcertCAkey 中使用根 CA 证书的证书 (cert1) 和私钥 (rsakey1) 值。

示例:

create ssl cert cert12 csr1 SRVR_CERT -CAcert cert1 -CAkey rsakey1 -CAserial 23

Done

如果存在中间证书,请在 CAcertCAkey 中使用中间证书的证书 (certsy) 和私钥 (pvtkey1) 值。

示例:

``` create ssl cert cert12 csr1 SRVR_CERT -CAcert certsy -CAkey pvtkey1 -CAserial 23

Done ``