Advertencia
Descargo de responsabilidad
Esta página está destinada a únicamente con fines de prueba y los certificados son únicamente para fines de prueba.
El siguiente tutorial proporciona algunos pasos básicos para crear 509 certificados de prueba X..
No utilice estos certificados para producción. En su lugar, siga sus políticas de seguridad.
Para obtener información sobre OpenSSL, consulte la documentación oficial de OpenSSL. Aunque este tutorial utiliza OpenSSL, no debe considerarse una referencia oficial sobre OpenSSL.
Requisito previo
El procedimiento descrito en esta página utiliza el certificado de autoridad intermedia de prueba y la clave mongodb-test-ia.crt y mongodb-test-ia.key creada en
Apéndice A - Certificado CA OpenSSL para probar implementaciones autogestionadas.
Procedimiento
El siguiente procedimiento describe los pasos para crear certificados de prueba para clientes MongoDB. Para obtener información sobre cómo crear certificados de prueba para servidores MongoDB, consulte el Apéndice B: Certificados de servidor OpenSSL para probar implementaciones autogestionadas.
A. Cree el archivo de configuración de OpenSSL
Crear un archivo de configuración de prueba
openssl-test-client.cnfpara su cliente con el siguiente contenido:# 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 subjectAltName = @alt_names [ alt_names ] DNS.1 = testclient.example.com ## Replace with the valid DNS name for the client DNS.2 = localhost ## Optional additional values IP.1 = 192.168.1.10 ## Replace with the client IP address [ 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 Nota
El Nombre Alternativo del Sujeto (SAN) es el estándar moderno preferido para definir nombres de host válidos, direcciones IP y otros sujetos de certificados. Aunque se especifica un valor de Nombre Común (CN), el CN es secundario al SAN en los estándares TLS modernos. El servidor MongoDB solo utiliza el CN para la coincidencia de nombres de host si el SAN se omite por completo.
Opcional. Puede actualizar los valores predeterminados del nombre distinguido (DN).
Importante
Asegúrese de que los certificados de cliente difieran de los certificados de servidor con respecto a al menos uno de los siguientes atributos: Organización (
O), Unidad organizativa (OU) o Componente de dominio (DC).
B. Generar el archivo PEM de prueba para el cliente
Cree el archivo de clave de
mongodb-test-client.keyprueba.openssl genrsa -out mongodb-test-client.key 4096 Cree la solicitud de firma del certificado de
mongodb-test-client.csrprueba. Cuando se le soliciten los valores de nombre distintivo, introduzca los valores correspondientes para su certificado de prueba:Importante
El sujeto del certificado del cliente debe ser diferente del sujeto del certificado del servidor con respecto a al menos uno de los siguientes atributos: Organización (O), Unidad Organizativa (OU) o Componente de Dominio (DC).
openssl req -new -key mongodb-test-client.key -out mongodb-test-client.csr -config openssl-test-client.cnf Cree el certificado de cliente de
mongodb-test-client.crtprueba.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 Cree el archivo PEM de prueba para el cliente.
cat mongodb-test-client.crt mongodb-test-client.key > test-client.pem Puede utilizar el archivo PEM de prueba para configurar
mongoshpara pruebas TLS/SSL. Por ejemplo, para conectarse a unmongodomongosun:Ejemplo
Incluya las siguientes opciones para el cliente:
mongosh --tls --host <serverHost> --tlsCertificateKeyFile test-client.pem --tlsCAFile test-ca.pem - En macOS,
Si está realizando pruebas con Keychain Access para administrar certificados, cree un archivo PKCS 12 para agregarlo a Keychain Access en lugar de un archivo PEM:
openssl pkcs12 -export -out test-client.pfx -inkey mongodb-test-client.key -in mongodb-test-client.crt -certfile mongodb-test-ia.crt Una vez agregado a Acceso a llaveros, en lugar de especificar el archivo de clave del certificado, puede usar el
--tlsCertificateSelectorpara especificar el certificado que se va a usar. Si el archivo CA también se encuentra en Acceso a Llaveros, puede omitir--tlsCAFile, como en el siguiente ejemplo:mongosh --tls --tlsCertificateSelector subject="<TestClientCertificateCommonName>" Para agregar certificados a Keychain Access, consulte la documentación oficial de Keychain Access.