附录C — 用于测试自管理部署的 OpenSSL 客户端证书
警告
免责声明
此页面仅供测试之用,证书也仅供测试之用。
以下教程提供了创建测试x.509 证书的一些基本步骤。
请勿将这些证书用于生产。 相反,请遵循您的安全策略。
有关 OpenSSL 的信息,请参阅 OpenSSL 官方Docs。尽管本教程使用 OpenSSL,但该材料不应被视为 OpenSSL 的权威参考资料。
先决条件
本页概述的过程使用在 附录 A - 用于测试自托管部署的 OpenSSL CA 证书中 创建的 测试 中间颁发机构证书和密钥mongodb-test-ia.crt
和mongodb-test-ia.key
。
步骤
以下过程概述了为MongoDB客户端创建测试证书的步骤。 有关为MongoDB服务器创建测试证书的步骤,请参阅附录 B - 用于测试自托管部署的 OpenSSL 服务器证书。
A. 创建 OpenSSL 配置文件
为客户端创建一个包含以下内容的测试配置文件
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 文件
创建测试密钥文件
mongodb-test-client.key
。openssl genrsa -out mongodb-test-client.key 4096 创建测试证书签名请求
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 创建测试客户端证书
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 为客户端创建测试PEM 文件。
cat mongodb-test-client.crt mongodb-test-client.key > test-client.pem 您可以使用 测试 PEM 文件为
mongosh
TLS/SSL 测试 配置 。例如,要连接到mongod
或mongos
:例子
为客户端提供以下选项:
mongosh --tls --host <serverHost> --tlsCertificateKeyFile test-client.pem --tlsCAFile 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
:mongosh --tls --tlsCertificateSelector subject="<TestClientCertificateCommonName>" 有关将证书添加到“钥匙串访问”的信息,请参阅“钥匙串访问”的官方文档。