ADC

创建证书

证书颁发机构 (CA) 是颁发数字证书以用于公钥加密的实体。执行 SSL 事务的应用程序(例如 Web 浏览器)信任由证书颁发机构颁发或签名的证书。这些应用程序维护着它们信任的 CA 的列表。如果任何受信任的 CA 对用于安全交易的证书进行签名,则应用程序会继续进行交易。

注意: Citrix 建议您对所有 SSL 事务使用从授权 CA(例如 Verisign)获取的证书。在 NetScaler 设备上生成的证书仅用于测试目的,不能用于任何实时部署。

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

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

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

下图说明了工作流程。

端到端流

如何创建和安装新证书

创建私钥

备注:

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

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

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

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

设备仅支持用于创建私钥的 RSA 加密算法。您可以将任一类型的私钥提交给证书颁发机构 (CA)。您从 CA 收到的证书仅对用于创建 CSR 的私钥有效。将证书添加到 NetScaler 设备需要密钥。

重要:

  • 请务必限制对私钥的访问。有权访问您的私钥的任何人都可以解密您的 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]
<!--NeedCopy-->

示例:

create rsakey testkey 2048 -aes256 -password 123456 -pkcs8
<!--NeedCopy-->

使用 GUI 创建 RSA 私钥

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

  2. 在“密钥”选项卡中,选择“创建 RSA 密钥”。

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

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

    输入值

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

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

  2. 密钥格式中,选择 PEM

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

  4. 选择 PKCS8

使用 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 )
<!--NeedCopy-->

示例:

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

使用 GUI 创建证书签名请求

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

  3. 摘要 方法中,选择 SHA256

有关详细信息 ,请参阅创建 CSR

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

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

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

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

注意: NetScaler 设备仅处理基于 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 )]
<!--NeedCopy-->

参数:

subjectAltName: 主体备用名称 (SAN) 是 X.509 的扩展,它允许使用 subjectaltName 字段将各种值与安全证书关联。这些值称为“主体备用名称”(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)

在命令行中,在引号内输入值。用空格分隔两个值。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"
<!--NeedCopy-->

注意:

在 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"
<!--NeedCopy-->

使用 GUI 创建 CSR

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

限制

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

将 CSR 提交给证书颁发机构

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

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

生成测试证书

注意:

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

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

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

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

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

在生成证书之前,请创建私有密钥并使用该密钥在设备上创建证书签名请求 (CSR)。然后,与其将 CSR 发送给 CA,不如使用 NetScaler CA 工具来生成证书。

使用向导创建证书

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

使用 CLI 创建根 CA 证书

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

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

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

示例:

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

  Done
<!--NeedCopy-->

使用 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>]
<!--NeedCopy-->

在以下示例中,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
<!--NeedCopy-->

使用 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>]
<!--NeedCopy-->

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

示例:

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

Done
<!--NeedCopy-->

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

示例:

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

Done
<!--NeedCopy-->

使用 OpenSSL 创建自签名的 SAN 证书

要创建具有多个使用者备用名称的自签名SAN证书,请执行以下步骤:

  1. 根据公司要求编辑相关字段,在本地计算机上创建 OpenSSL 配置文件。

    注意:在以下示例中,配置文件是“req.conf”。

    [req]
    distinguished_name = req_distinguished_name
    x509_extensions = v3_req
    prompt = no
    [req_distinguished_name]
    C = US
    ST = VA
    L = SomeCity
    O = MyCompany
    OU = MyDivision
    CN = www.company.com
    [v3_req]
    keyUsage = keyEncipherment, dataEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    [alt_names]
    DNS.1 = www.company.net
    DNS.2 = company.com
    DNS.3 = company.net
    <!--NeedCopy-->
    
  2. 将文件上载到 NetScaler 设备上的 /nsconfig/ssl 目录中。

  3. nsroot 用户身份登录 NetScaler CLI 并切换到 shell 提示符。

  4. 运行以下命令创建证书:

    cd /nsconfig/ssl
    openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout cert.pem -out cert.pem -config req.conf -extensions 'v3_req'
    <!--NeedCopy-->
    
  5. 运行以下命令验证证书:

    openssl x509 -in cert.pem -noout –text
    Certificate:
    Data:
    Version: 3 (0x2)
    Serial Number:
    ed:90:c5:f0:61:78:25:ab
    Signature Algorithm: md5WithRSAEncryption
    Issuer: C=US, ST=VA, L=SomeCity, O=MyCompany, OU=MyDivision, CN=www.company.com
    Validity
    Not Before: Nov 6 22:21:38 2012 GMT
    Not After : Nov 6 22:21:38 2014 GMT
    Subject: C=US, ST=VA, L=SomeCity, O=MyCompany, OU=MyDivision, CN=www.company.com
    Subject Public Key Info:
    Public Key Algorithm: rsaEncryption
    RSA Public Key: (2048 bit)
    Modulus (2048 bit):
    …
    Exponent: 65537 (0x10001)
    X509v3 extensions:
    X509v3 Key Usage:
    Key Encipherment, Data Encipherment
    X509v3 Extended Key Usage:
    TLS Web Server Authentication
    X509v3 Subject Alternative Name:
    DNS:www.company.net, DNS:company.com, DNS:company.net
    Signature Algorithm: md5WithRSAEncryption …
    <!--NeedCopy-->