使用自定义根 CA 生成网关自签名证书

404 阅读3分钟

使用自定义根 CA 生成网关自签名证书

创建根 CA 证书

使用 OpenSSL 创建根 CA 证书。

创建根密钥

  1. 登录到安装了 OpenSSL 的计算机并运行以下命令。 这会创建加密密钥。

    openssl ecparam -out contoso.key -name prime256v1 -genkey
    

创建根证书并进行自签名

  1. 使用以下命令生成证书签名请求 (CSR)。

    openssl req -new -sha256 -key contoso.key -out contoso.csr
    
  2. 出现提示时,请键入根密钥的密码,以及自定义 CA 的组织信息,例如国家/地区、省/市/自治区、组织、组织单位和完全限定的域名(颁发者的域)。

    create root certificate

  3. 使用以下命令生成根证书。

    openssl x509 -req -sha256 -days 365 -in contoso.csr -signkey contoso.key -out contoso.crt
    

    上述命令将创建根证书。 稍后你将使用此证书来为服务器证书签名。

创建服务器证书

接下来,使用 OpenSSL 创建服务器证书。

创建证书的密钥

使用以下命令生成服务器证书的密钥。

openssl ecparam -out fabrikam.key -name prime256v1 -genkey

创建 CSR(证书签名请求)

CSR 是请求证书时向 CA 提供的公钥。 CA 将针对此特定请求颁发证书。

 备注

服务器证书的 CN(公用名)必须与颁发者的域不同。 例如,在本例中,颁发者的 CN 是 www.contoso.com,服务器证书的 CN 是 www.fabrikam.com

  1. 使用以下命令生成 CSR:

    openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
    
  2. 出现提示时,请键入根密钥的密码,以及自定义 CA 的组织信息:国家/地区、省/市/自治区、组织、组织单位和完全限定的域名。 这是网站的域,它应该不同于颁发者。

    Server certificate

使用 CSR 和密钥生成证书,并使用 CA 的根密钥为该证书签名

  1. 使用以下命令以创建证书:

    openssl x509 -req -in fabrikam.csr -CA  contoso.crt -CAkey contoso.key -CAcreateserial -out fabrikam.crt -days 365 -sha256
    

验证新建的证书

  1. 使用以下命令列显 CRT 文件的输出,并验证其内容:

    openssl x509 -in fabrikam.crt -text -noout
    

    Certificate verification

  2. 验证目录中的文件,确保其中具有以下文件:

    • contoso.crt
    • contoso.key
    • fabrikam.crt
    • fabrikam.key

在 Web 服务器的 TLS 设置中配置证书

在 Web 服务器中,使用 fabrikam.crt 和 fabrikam.key 文件配置 TLS。 如果 Web 服务器无法接收这两个文件,你可以使用 OpenSSL 命令将其合并成单个 .pem 或 .pfx 文件。

Apache

以下配置是在 Apache 中 为 SSL 配置的虚拟主机 示例:

<VirtualHost www.fabrikam:443>
      DocumentRoot /var/www/fabrikam
      ServerName www.fabrikam.com
      SSLEngine on
      SSLCertificateFile /home/user/fabrikam.crt
      SSLCertificateKeyFile /home/user/fabrikam.key
</VirtualHost>

NGINX

以下配置是 NGINX 服务器块与 TLS 配置的示例:

NGINX with TLS

访问服务器以验证配置

  1. 将根证书添加到计算机的受信任根存储中。 访问网站时,请确保浏览器中显示整个证书链。

    Trusted root certificates

  2. 浏览到你的网站,然后单击浏览器地址框中的锁定图标来验证站点和证书信息。

使用 OpenSSL 验证配置

或者,可以使用 OpenSSL 来验证证书。

openssl s_client -connect localhost:443 -servername www.fabrikam.com -showcerts

OpenSSL certificate verification