Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

附录 B — 用于测试自管理部署的 OpenSSL 服务器证书

警告

免责声明

此页面仅供测试之用,证书也仅供测试之用。

以下教程提供了创建测试x.509 证书的一些基本步骤:

  • 请勿将这些证书用于生产。 相反,请遵循您的安全策略。

  • 有关 OpenSSL 的信息,请参阅 OpenSSL 官方Docs。尽管本教程使用 OpenSSL,但该材料不应被视为 OpenSSL 的权威参考资料。

本页概述的过程使用在 附录 A - 用于测试自托管部署的 OpenSSL CA 证书 中 创建的 测试 中间颁发机构证书和密钥mongodb-test-ia.crtmongodb-test-ia.key

以下过程概述了为MongoDB服务器创建测试证书的步骤。 有关为MongoDB客户端创建测试证书的步骤,请参阅附录C - 用于测试自托管部署的 OpenSSL 客户端证书。

  1. 使用以下内容为服务器创建测试配置文件 openssl-test-server.cnf

    # NOT FOR PRODUCTION USE. OpenSSL configuration file for testing.
    [ req ]
    default_bits = 4096
    default_keyfile = myTestServerCertificateKey.pem ## The default private key file name.
    default_md = sha256
    distinguished_name = req_dn
    req_extensions = v3_req
    [ v3_req ]
    subjectKeyIdentifier = hash
    basicConstraints = CA:FALSE
    keyUsage = critical, digitalSignature, keyEncipherment
    nsComment = "OpenSSL Generated Certificate for TESTING only. NOT FOR PRODUCTION USE."
    extendedKeyUsage = serverAuth, clientAuth
    subjectAltName = @alt_names
    [ alt_names ]
    DNS.1 = ##TODO: Enter the DNS names. The DNS names should match the server names.
    DNS.2 = ##TODO: Enter the DNS names. The DNS names should match the server names.
    IP.1 = ##TODO: Enter the IP address.
    IP.2 = ##TODO: Enter the IP address.
    [ req_dn ]
    countryName = Country Name (2 letter code)
    countryName_default = TestServerCertificateCountry
    countryName_min = 2
    countryName_max = 2
    stateOrProvinceName = State or Province Name (full name)
    stateOrProvinceName_default = TestServerCertificateState
    stateOrProvinceName_max = 64
    localityName = Locality Name (eg, city)
    localityName_default = TestServerCertificateLocality
    localityName_max = 64
    organizationName = Organization Name (eg, company)
    organizationName_default = TestServerCertificateOrg
    organizationName_max = 64
    organizationalUnitName = Organizational Unit Name (eg, section)
    organizationalUnitName_default = TestServerCertificateOrgUnit
    organizationalUnitName_max = 64
    commonName = Common Name (eg, YOUR name)
    commonName_max = 64
  2. [alt_names]部分中,为 MongoDB 服务器输入适当的 DNS 名称和/或 IP 地址。 您可以为一个 MongoDB Server 指定多个 DNS 名称。

    对于 OpenSSL SAN 标识符,MongoDB 支持:

    • DNS 名称和/或

    • IP 地址字段

  3. 可选。您可以更新默认标识名 (DN) 值。

提示

  • 至少为以下属性之一指定非空值:组织 ( O )、组织单位 ( OU ) 或域组件 ( DC )。

  • 为内部成员身份验证创建测试服务器证书时,以下属性(如果指定)必须在成员证书中完全匹配:组织 ( O )、组织单位 ( OU )、域组件 ( DC )。

    有关内部成员身份验证要求的更多信息,请参阅成员身份验证。

重要

在继续之前,请确保您已在配置文件openssl-test-server.cnf[alt_names]部分中输入适当的 DNS 名称。

  1. 创建测试密钥文件mongodb-test-server1.key

    openssl genrsa -out mongodb-test-server1.key 4096
  2. 创建测试证书签名请求mongodb-test-server1.csr

    当询问标识名值时,请输入适合您的测试证书的值:

    • 至少为以下属性之一指定非空值:组织 ( O )、组织单位 ( OU ) 或域组件 ( DC )。

    • 为内部成员身份验证创建测试服务器证书时,以下属性(如果指定)必须在成员证书中完全匹配:组织 ( O )、组织单位 ( OU )、域组件 ( DC )。

    openssl req -new -key mongodb-test-server1.key -out mongodb-test-server1.csr -config openssl-test-server.cnf
  3. 创建测试服务器证书mongodb-test-server1.crt

    openssl x509 -sha256 -req -days 365 -in mongodb-test-server1.csr -CA mongodb-test-ia.crt -CAkey mongodb-test-ia.key -CAcreateserial -out mongodb-test-server1.crt -extfile openssl-test-server.cnf -extensions v3_req
  4. 为服务器创建测试PEM 文件。

    cat mongodb-test-server1.crt mongodb-test-server1.key > test-server1.pem

    在为 TLS/SSLmongod mongos测试 配置 或 时,可以使用 测试 PEM 文件。例如:

    例子

    mongod --tlsMode requireTLS --tlsCertificateKeyFile test-server1.pem --tlsCAFile test-ca.pem
    在 macOS 上,

    如果使用“钥匙串访问”来托管证书进行测试,请创建要添加到“钥匙串访问”的 pkcs-12 文件,而不是 PEM 文件:

    openssl pkcs12 -export -out test-server1.pfx -inkey mongodb-test-server1.key -in mongodb-test-server1.crt -certfile mongodb-test-ia.crt

    添加到“钥匙串访问”后,您可以使用--tlsCertificateSelector指定要使用的证书,而不是指定证书密钥文件。 如果 CA 文件也在“钥匙串访问”中,则也可以省略--tlsCAFile

    mongod --tlsMode requireTLS --tlsCertificateSelector subject="<TestServerCertificateCommonName>"

后退

OpenSSL CA