Docs 菜单

Docs 主页开发应用程序MongoDB Manual

附录 C - 用于测试的 OpenSSL 客户端证书

警告

免责声明

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

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

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

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

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

以下过程概述了为 MongoDB 客户端创建测试证书的步骤。 有关为 MongoDB Server 创建test证书的步骤,请参阅附录 B — 用于测试的 OpenSSL 服务器证书。

  1. 为客户端创建一个包含以下内容的测试配置文件 openssl-test-client.cnf

    # NOT FOR PRODUCTION USE. OpenSSL configuration file for testing.
    [ req ]
    default_bits = 4096
    default_keyfile = myTestClientCertificateKey.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
    [ req_dn ]
    countryName = Country Name (2 letter code)
    countryName_default =
    countryName_min = 2
    countryName_max = 2
    stateOrProvinceName = State or Province Name (full name)
    stateOrProvinceName_default = TestClientCertificateState
    stateOrProvinceName_max = 64
    localityName = Locality Name (eg, city)
    localityName_default = TestClientCertificateLocality
    localityName_max = 64
    organizationName = Organization Name (eg, company)
    organizationName_default = TestClientCertificateOrg
    organizationName_max = 64
    organizationalUnitName = Organizational Unit Name (eg, section)
    organizationalUnitName_default = TestClientCertificateOrgUnit
    organizationalUnitName_max = 64
    commonName = Common Name (eg, YOUR name)
    commonName_max = 64
  2. 可选。 您可以更新默认标识名 (DN) 值。确保客户端证书至少在以下属性之一与服务器证书不同:组织 ( O )、组织单位 ( OU ) 或域组件 ( DC )。

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

    openssl genrsa -out mongodb-test-client.key 4096
  2. 创建测试证书签名请求mongodb-test-client.csr 。 当询问标识名值时,请输入适合您的测试证书的值:

    重要

    客户端证书主题必须至少在以下属性之一方面与服务器证书主题不同:组织 (O)、组织单位 (OU) 或域组件 (DC)。

    openssl req -new -key mongodb-test-client.key -out mongodb-test-client.csr -config openssl-test-client.cnf
  3. 创建测试客户端证书mongodb-test-client.crt

    openssl x509 -sha256 -req -days 365 -in mongodb-test-client.csr -CA mongodb-test-ia.crt -CAkey mongodb-test-ia.key -CAcreateserial -out mongodb-test-client.crt -extfile openssl-test-client.cnf -extensions v3_req
  4. 为客户端创建测试PEM 文件。

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

    您可以使用 测试 PEM 文件为mongosh TLS/SSL 测试 配置 。例如,要连接到mongod mongos或 :

    例子

    对于 MongoDB 4.2 或更高版本,请为客户端包含以下选项:

    mongosh --tls --host <serverHost> --tlsCertificateKeyFile test-client.pem --tlsCAFile test-ca.pem

    例子

    对于 MongoDB 4.0 及更早版本**,请为客户端包含以下选项:

    mongosh --ssl --host <serverHost> --sslPEMKeyFile test-client.pem --sslCAFile test-ca.pem
    在 macOS 上,

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

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

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

    对于 MongoDB 4.2 或更高版本

    mongosh --tls --tlsCertificateSelector subject="<TestClientCertificateCommonName>"

    --ssl--sslCertificateSelector虽然仍然可用,但从 MongoDB 4开始已弃用。 2 。

    对于 MongoDB 4.0 及更早版本

    mongosh --ssl --sslCertificateSelector subject="<TestClientCertificateCommonName>"

    有关将证书添加到“钥匙串访问”的信息,请参阅“钥匙串访问”的官方文档。

提示

← 附录 B — 用于测试的 OpenSSL 服务器证书