使用自定义根 CA 生成网关自签名证书
创建根 CA 证书
使用 OpenSSL 创建根 CA 证书。
创建根密钥
-
登录到安装了 OpenSSL 的计算机并运行以下命令。 这会创建加密密钥。
openssl ecparam -out contoso.key -name prime256v1 -genkey
创建根证书并进行自签名
-
使用以下命令生成证书签名请求 (CSR)。
openssl req -new -sha256 -key contoso.key -out contoso.csr -
出现提示时,请键入根密钥的密码,以及自定义 CA 的组织信息,例如国家/地区、省/市/自治区、组织、组织单位和完全限定的域名(颁发者的域)。
-
使用以下命令生成根证书。
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
-
使用以下命令生成 CSR:
openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr -
出现提示时,请键入根密钥的密码,以及自定义 CA 的组织信息:国家/地区、省/市/自治区、组织、组织单位和完全限定的域名。 这是网站的域,它应该不同于颁发者。
使用 CSR 和密钥生成证书,并使用 CA 的根密钥为该证书签名
-
使用以下命令以创建证书:
openssl x509 -req -in fabrikam.csr -CA contoso.crt -CAkey contoso.key -CAcreateserial -out fabrikam.crt -days 365 -sha256
验证新建的证书
-
使用以下命令列显 CRT 文件的输出,并验证其内容:
openssl x509 -in fabrikam.crt -text -noout -
验证目录中的文件,确保其中具有以下文件:
- 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 配置的示例:
访问服务器以验证配置
-
将根证书添加到计算机的受信任根存储中。 访问网站时,请确保浏览器中显示整个证书链。
-
浏览到你的网站,然后单击浏览器地址框中的锁定图标来验证站点和证书信息。
使用 OpenSSL 验证配置
或者,可以使用 OpenSSL 来验证证书。
openssl s_client -connect localhost:443 -servername www.fabrikam.com -showcerts