Esportare i certificati dell'emulatore di Azure Cosmos DB per l'uso con Java, Python e Node.js

Scaricare l'emulatore

L'emulatore di Azure Cosmos DB fornisce un ambiente locale che emula il servizio Azure Cosmos DB per obiettivi di sviluppo, incluso l'uso di connessioni SSL. Questo post illustra come esportare i certificati SSL da usare in linguaggi e runtime non integrati con l'archivio certificati Windows, ad esempio Java che usa il proprio archivio certificati, Python che usa wrapper per socket e Node.js che usa tlsSocket. Per altre informazioni sull'emulatore, vedere Usare l'emulatore di Azure Cosmos DB per sviluppo e test.

Questa esercitazione illustra le attività seguenti:

  • Rotazione dei certificati
  • Esportazione di un certificato SSL
  • Come usare il certificato in Java, Python e Node.js

Rotazione della certificazione

I certificati nell'emulatore locale di Azure Cosmos DB vengono generati la prima volta che l'emulatore viene eseguito. Esistono due certificati, uno usato per la connessione all'emulatore locale e l'altro per la gestione dei segreti nell'emulatore. Il certificato che si vuole esportare è il certificato per la connessione con il nome descrittivo "DocumentDBEmulatorCertificate".

Entrambi i certificati possono essere rigenerati facendo clic su Reset Data (Reimposta dati), come illustrato di seguito, dall'emulatore di Azure Cosmos DB in esecuzione nell'area di notifica di Windows. Se si rigenerano i certificati e questi sono stati installati nell'archivio certificati di Java o usati altrove, sarà necessario aggiornarli. In caso contrario l'applicazione non si connetterà più all'emulatore locale.

Reimpostazione dei dati nell'emulatore locale di Azure Cosmos DB

Come esportare il certificato SSL dell'emulatore di Azure Cosmos DB

  1. Avviare Gestione certificati di Windows eseguendo certlm.msc, passare alla cartella Personale->Certificati e aprire il certificato con il nome descrittivo DocumentDbEmulatorCertificate.

    Passaggio 1 dell'esportazione nell'emulatore locale di Azure Cosmos DB

  2. Fare clic su Details (Dettagli) quindi su OK.

    Passaggio 2 dell'esportazione nell'emulatore locale di Azure Cosmos DB

  3. Fare clic su Copy to File... (Copia in file).

    Passaggio 3 dell'esportazione nell'emulatore locale di Azure Cosmos DB

  4. Fare clic su Avanti.

    Passaggio 4 dell'esportazione nell'emulatore locale di Azure Cosmos DB

  5. Fare clic su No, do not export private key (No, non esportare la chiave privata) e quindi su Next (Avanti).

    Passaggio 5 dell'esportazione nell'emulatore locale di Azure Cosmos DB

  6. Fare clic su Base-64 encoded X.509 (.CER) (Codificato in base 64 X.509 (.CER)) e quindi su Next (Avanti).

    Passaggio 6 dell'esportazione nell'emulatore locale di Azure Cosmos DB

  7. Assegnare un nome al certificato. In questo caso, documentdbemulatorcert, quindi fare clic su Next (Avanti).

    Passaggio 7 dell'esportazione nell'emulatore locale di Azure Cosmos DB

  8. Fare clic su Finish (Fine).

    Passaggio 8 dell'esportazione nell'emulatore locale di Azure Cosmos DB

Come usare il certificato in Java

Quando si eseguono applicazioni Java o applicazioni MongoDB che usano il client Java, è più facile installare il certificato nell'archivio certificati predefinito di Java che passare i flag "-Djavax.net.ssl.trustStore= -Djavax.net.ssl.trustStorePassword="". Ad esempio, l'applicazione demo Java inclusa dipende dall'archivio certificati predefinito.

Seguire le istruzioni indicate in Aggiunta di un certificato all'archivio certificati CA Java per importare il certificato X.509 nell'archivio certificati Java predefinito. Tenere presente che si usa la directory %JAVA_HOME% quando si esegue keytool.

Dopo l'installazione del certificato SSL "CosmosDBEmulatorCertificate", l'applicazione potrà connettersi e usare l'emulatore di Azure Cosmos DB locale. Se i problemi persistono, vedere l'articolo Debug delle connessioni SSL/TLS. Molto probabilmente il certificato non è installato nell'archivio %JAVA_HOME%/jre/lib/security/cacerts. Se, ad esempio, sono installate più versioni di Java, è possibile che l'applicazione stia usando un archivio cacerts diverso da quello aggiornato.

Come usare il certificato in Python

Per impostazione predefinita, Python SDK (2.0.0 o versione successiva) per l'API di DocumentDB non prova a usare il certificato SSL quando si connette all'emulatore locale. Se tuttavia si vuole usare la convalida SSL, è possibile seguire gli esempi della documentazione sui wrapper per socket di Python.

Come usare il certificato in Node.js

Per impostazione predefinita, Node.js SDK (1.10.1 o versione successiva) per l'API di DocumentDB non prova a usare il certificato SSL quando si connette all'emulatore locale. Se tuttavia si vuole usare la convalida SSL, è possibile seguire gli esempi nella documentazione di Node.js.

Passaggi successivi

In questa esercitazione sono state eseguite le operazioni seguenti:

  • Rotazione dei certificati
  • Esportazione del certificato SSL
  • Uso del certificato in Java, Python e Node.js

È ora possibile passare all'esercitazione Creare un trigger HTTP di Funzioni di Azure con un'associazione di input di Azure Cosmos DB.