Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Anexo C - Certificados de cliente OpenSSL para teste

Aviso

Aviso

Esta página é fornecida apenas parafins de teste e os certificados são apenas para fins de teste.

O tutorial a seguir fornece algumas etapas básicas para criar certificados de teste x.509.

  • Não use esses certificados para produção. Em vez disso, siga suas políticas de segurança.

  • Para obter informações sobre OpenSSL, consulte os documentos oficiais do OpenSSL. Embora este tutorial use OpenSSL, o material não deve ser considerado uma referência oficial no OpenSSL.

O procedimento descrito nesta página utiliza o certificado de autoridade intermediária de teste e as chaves mongodb-test-ia.crt e mongodb-test-ia.key criadas no Apêndice A - Certificado OpenSSL CA para testes.

O procedimento a seguir descreve as etapas para criar certificados de teste para clientes do MongoDB. Para obter as etapas de criação de certificados de teste para MongoDB Server, consulte Apêndice B - Certificados de servidor OpenSSL para teste.

  1. Crie um arquivo de configuração de teste openssl-test-client.cnf para seu cliente com o seguinte conteúdo:

    # 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. Opcional. Você pode atualizar os valores padrão de nome diferenciado (nome diferenciado). Certifique-se de que os certificados do cliente sejam diferentes dos certificados do servidor em relação a pelo menos um dos seguintes atributos: Organização (O), Unidade Organizacional (OU) ou Componente de Domínio (DC).

  1. Crie o arquivo de chave de teste mongodb-test-client.key.

    openssl genrsa -out mongodb-test-client.key 4096
  2. Crie a solicitação de assinatura de certificado de teste mongodb-test-client.csr. Quando solicitado para valores de nome distinto, insira os valores apropriados para o certificado de teste :

    Importante

    O assunto do certificado do cliente deve diferir de um assunto de certificado de servidor com relação a pelo menos um dos seguintes atributos: organização (O), Unidade Organizacional (OU) ou Componente de Domínio (DC).

    openssl req -new -key mongodb-test-client.key -out mongodb-test-client.csr -config openssl-test-client.cnf
  3. Crie o certificado do cliente de teste 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. Crie o arquivo PEM de teste para o cliente.

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

    Você pode usar o arquivo PEM de teste para configurar mongosh para teste TLS/SSL. Por exemplo, para conectar a um mongod ou um mongos:

    Exemplo

    Para MongoDB 4.2 ou superior, inclua as seguintes opções para o cliente:

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

    Exemplo

    Para MongoDB 4.0 e anterior **, inclua as seguintes opções para o cliente:

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

    Se você estiver testando com o Keychain Access para managed certificados, crie um arquivo PKCS 12 para adicionar ao Keychain Access em vez de um arquivo PEM:

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

    Uma vez adicionado ao Keychain Access, em vez de especificar o arquivo de chave de certificado, você pode usar o --tlsCertificateSelector para especificar o certificado a ser usado. Se o arquivo CA também estiver no Keychain Access, você poderá omitir --tlsCAFile , bem como no exemplo a seguir:

    Para MongoDB 4.2 ou superior

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

    Embora ainda estejam disponíveis, --ssl e --sslCertificateSelector estão obsoletos a partir do MongoDB 4.2.

    Para MongoDB 4.0 e anterior

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

    Para adicionar certificados ao Keychain Access, consulte a documentação oficial do Keychain Access.

Dica

← Apêndice B – Certificados de servidor OpenSSL para teste