附录 C - 用于测试自管理部署的 OpenSSL 客户端证书
警告
免责声明
本页面仅供测试目的使用,证书也仅用于 测试目的。
以下教程提供了创建 测试 x.509 证书的一些基本步骤。
请不要在生产环境中使用这些证书。相反,请遵循您的安全策略。
有关 OpenSSL 的信息,请参阅官方 OpenSSL 文档。尽管本教程使用了 OpenSSL,但这些材料不应被视为 OpenSSL 的权威参考。
先决条件
本页概述的流程使用 test 中间授权证书和密钥 mongodb-test-ia.crt
和 mongodb-test-ia.key
,它们在附录 A - OpenSSL CA 证书用于测试自管理部署.
流程
以下流程概述了创建 MongoDB 客户端 test 证书的步骤。有关创建 MongoDB 服务器 test 证书的步骤,请参阅 附录 B - OpenSSL 服务器证书用于测试自管理部署。
A. 创建 OpenSSL 配置文件
创建 test 配置文件
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 可选。您可以更新默认的区分名称(DN)值。确保客户端证书与服务器证书在以下属性中至少有一个不同:组织(
O
)、组织单位(OU
)或域组件(DC
)。
B. 为客户端生成测试 PEM 文件
创建 test 密钥文件
mongodb-test-client.key
。openssl genrsa -out mongodb-test-client.key 4096 创建 test 证书签名请求
mongodb-test-client.csr
。当提示输入区分名称值时,输入您 test 证书的适当值重要
客户端证书的主题必须与服务器证书的主题在以下属性中至少有一个不同:组织(O)、组织单位(OU)或域组件(DC)。
openssl req -new -key mongodb-test-client.key -out mongodb-test-client.csr -config openssl-test-client.cnf 创建 test 客户端证书
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 创建客户端的 test PEM 文件。
cat mongodb-test-client.crt mongodb-test-client.key > test-client.pem 您可以使用 test PEM 文件来配置
mongosh
进行 TLS/SSL 测试。例如,连接到mongod
或mongos
:示例
客户端需要包含以下选项
mongosh --tls --host <serverHost> --tlsCertificateKeyFile test-client.pem --tlsCAFile test-ca.pem - 在 macOS 上,
如果您使用 Keychain Access 来管理证书进行测试,请创建一个 PKCS 12 文件以添加到 Keychain Access,而不是 PEM 文件
openssl pkcs12 -export -out test-client.pfx -inkey mongodb-test-client.key -in mongodb-test-client.crt -certfile mongodb-test-ia.crt 一旦添加到 Keychain Access,您可以使用
--tlsCertificateSelector
来指定要使用的证书,而不是指定证书密钥文件。如果 CA 文件也在 Keychain Access 中,您还可以省略--tlsCAFile
,如下例所示mongosh --tls --tlsCertificateSelector subject="<TestClientCertificateCommonName>" 有关将证书添加到 Keychain Access 的说明,请参阅您的官方 Keychain Access 文档。