附录B - 测试自托管部署的OpenSSL服务器证书
警告
免责声明
此页面仅供测试目的使用,证书也仅供测试目的使用。
以下教程提供了一些创建 测试 x.509 证书的基本步骤
请不要在生产环境中使用这些证书。相反,遵循您的安全策略。
有关OpenSSL的信息,请参阅官方OpenSSL文档。尽管本教程使用OpenSSL,但不应将其视为OpenSSL的权威参考资料。
先决条件
此页面概述的流程使用 测试 中间授权证书和密钥 mongodb-test-ia.crt
和 mongodb-test-ia.key
,这些证书和密钥在附录A - 测试自托管部署的OpenSSL CA证书 .
流程
以下流程概述了为MongoDB服务器创建 测试 证书的步骤。有关为MongoDB客户端创建 测试 证书的步骤,请参阅附录C - 测试自托管部署的OpenSSL客户端证书。
A. 创建 OpenSSL 配置文件
创建一个 测试 配置文件
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 在
[alt_names]
部分,输入 MongoDB 服务器的适当 DNS 名称和/或 IP 地址。您可以指定多个 DNS 名称供 MongoDB 服务器使用。对于 OpenSSL SAN 标识符,MongoDB 支持
DNS 名称和/或
IP 地址字段
可选。您可以更新默认的区分名称(DN)值。
提示
至少指定以下属性中的一个的非空值:组织(
O
)、组织单位(OU
)或域组件(DC
)。在创建用于内部成员身份验证的 测试 服务器证书时,以下属性(如果指定),必须在成员证书中完全匹配:组织(
O
)、组织单位(OU
)、域组件(DC
)。有关内部成员身份验证要求的更多信息,请参阅 成员身份验证。
B. 生成服务器测试 PEM 文件
重要
在继续之前,请确保您已在配置文件 openssl-test-server.cnf
的 [alt_names]
部分中输入了适当的 DNS 名称。
创建 测试 密钥文件
mongodb-test-server1.key
。openssl genrsa -out mongodb-test-server1.key 4096 创建 测试 证书签名请求
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 创建 测试 服务器证书
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 创建服务器的 测试 PEM 文件。
cat mongodb-test-server1.crt mongodb-test-server1.key > test-server1.pem 在配置
mongod
或mongos
以进行 TLS/SSL 测试 时,您可以使用 测试 PEM 文件。例如:示例
mongod --tlsMode requireTLS --tlsCertificateKeyFile test-server1.pem --tlsCAFile test-ca.pem - 在 macOS 上:
如果您使用 Keychain Access 来管理证书进行测试,请创建一个 pkcs-12 文件以添加到 Keychain Access 而不是 PEM 文件。
openssl pkcs12 -export -out test-server1.pfx -inkey mongodb-test-server1.key -in mongodb-test-server1.crt -certfile mongodb-test-ia.crt 一旦添加到 Keychain Access,您可以使用
--tlsCertificateSelector
来指定要使用的证书,而不是指定证书密钥文件。如果 CA 文件也在 Keychain Access 中,您还可以省略--tlsCAFile
。mongod --tlsMode requireTLS --tlsCertificateSelector subject="<TestServerCertificateCommonName>"