自签名证书生成

不建议在生产环境中使用自签名证书。对于生产环境,建议使用受信任的证书颁发机构。本节概述了一种在测试和演示目的下生成自签名证书的实用方法。

以下说明展示了如何使用 OpenSSL 库生成适合 NOM 环境的自签名证书。使用其他库或在线工具生成的兼容自签名证书也可与 NOM 一起使用。

  1. 确保已安装 OpenSSL 库。

    这些说明中使用的命令已在 OpenSSL 3.1.1 上进行了测试。要检查 OpenSSL 的版本,请使用以下命令

    openssl version
  2. 创建自签名证书

    示例:要为公用名称 localhost 生成自签名证书,可以通过 'localhost.localdomain' 或 'my.custom.domain' 的 DNS 名称或 '127.0.0.1' 或 '192.168.100.5' 的 IP 地址访问它

    openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
      -subj "/CN=localhost" \
      -addext "subjectAltName = DNS:localhost.localdomain, DNS:my.custom.domain, IP:127.0.0.1, IP:192.168.100.5" \
      -addext "keyUsage = critical, digitalSignature, keyEncipherment" \
      -addext "extendedKeyUsage = serverAuth" \
      -addext "authorityKeyIdentifier = keyid:always,issuer:always" \
      -keyout "server.key" \
      -out "server.cer"

    结果,文件 server.keyserver.cer 将在当前目录中创建。

    重要参数

    • -subj "…​":用于指定公用名称

    • -addext "subjectAltName = …​":用于指定备用 DNS 名称和/或 IP 地址

  3. 将生成的证书转换为 PFX 格式,为 server.pfx 中生成的证书存储指定密码

    openssl pkcs12 -export \
      -inkey "server.key" \
      -in "server.cer" \
      -out "server.pfx" \
      -password "pass:changeit"

为了避免在命令行上指定存储密码,请省略先前命令中的 -password 选项,以使 OpenSSL 交互式地询问密码。

然后,您可以使用文件 server.cerserver.pfx 为服务器和代理配置 TLS 加密通信。