De Azure Cosmos DB Emulator exporteren voor gebruik met Java-, Python- en Node.js apps

VAN TOEPASSING OP: SQL-API Cassandra-API Gremlin-API Table-API Azure Cosmos DB-API voor MongoDB

De Azure Cosmos DB Emulator is een lokale omgeving waarin de Azure Cosmos DB-service wordt geëmuleerd voor ontwikkelingsdoeleinden. Azure Cosmos DB Emulator ondersteunt alleen beveiligde communicatie via TLS-verbindingen.

Certificaten in de Azure Cosmos DB lokale emulator worden gegenereerd wanneer u de emulator voor het eerst gebruikt. Er zijn twee certificaten. Een van deze wordt gebruikt om verbinding te maken met de lokale emulator en de andere wordt gebruikt voor het beheren van standaardversleuteling van de emulatorgegevens in de emulator. Het certificaat dat u wilt exporteren, is het verbindingscertificaat met de beschrijvende naam DocumentDBEmulatorCertificate.

Wanneer u de emulator gebruikt om apps te ontwikkelen in verschillende talen, zoals Java, Python of Node.js, moet u het emulatorcertificaat exporteren en importeren in het vereiste certificaatopslag.

De .NET-taal en runtime gebruiken het Windows Certificate Store om veilig verbinding te maken met de lokale Azure Cosmos DB-emulator wanneer de toepassing wordt uitgevoerd op een Windows OS-host. Andere talen hebben hun eigen methode voor het beheren en gebruiken van certificaten. Java gebruikt bijvoorbeeld een eigen certificaatopslag,Python gebruikt socket-wrappersen Node.js gebruikt tlsSocket.

In dit artikel wordt gedemonstreerd hoe u de TLS/SSL-certificaten exporteert voor gebruik in verschillende talen en runtime-omgevingen die niet zijn geïntegreerd met het Windows Certificate Store. Meer informatie over de emulator vindt u in Azure Cosmos DB Emulator gebruiken voor ontwikkeling en tests.

Het Azure Cosmos DB TLS/SSL-certificaat exporteren

U moet het emulatorcertificaat exporteren om het emulator-eindpunt te kunnen gebruiken vanuit talen en runtime-omgevingen die niet zijn geïntegreerd met het Windows Certificate Store. U kunt het certificaat exporteren met behulp van Windows Certificate Manager. Gebruik de volgende stapsgewijle instructies om het certificaat DocumentDBEmulatorCertificate te exporteren als een met BASE-64 gecodeerd X.509-bestand (.cer) :

  1. Start het Windows-certificaatbeheer door certlm.msc uit te voeren en ga naar de map Persoonlijk->Certificaten om het certificaat met de beschrijvende naam DocumentDbEmulatorCertificate te openen.

    Stap 1 van exporteren met lokale Azure DB Cosmos-emulator

  2. Klik op Details en klik op OK.

    Stap 2 van exporteren met lokale Azure DB Cosmos-emulator

  3. Klik op Kopiëren naar bestand....

    Stap 3 van exporteren met lokale Azure DB Cosmos-emulator

  4. Klik op Volgende.

    Stap 4 van exporteren met lokale Azure DB Cosmos-emulator

  5. Klik op Nee, persoonlijke sleutel niet exporteren en klik op Volgende.

    Stap 5 van exporteren met lokale Azure DB Cosmos-emulator

  6. Klik op Base-64 encoded X.509 (.CER) en klik op Volgende.

    Stap 6 van exporteren met lokale Azure DB Cosmos-emulator

  7. Geef het certificaat een naam, in dit geval documentdbemulatorcert, en klik op Volgende.

    Stap 7 van exporteren met lokale Azure DB Cosmos-emulator

  8. Klik op Voltooien.

    Stap 8 van exporteren met lokale Azure DB Cosmos-emulator

Het certificaat gebruiken met Java-apps

Bij het uitvoeren van Java-toepassingen of MongoDB-toepassingen die een op Java gebaseerde client gebruiken, is het eenvoudiger om het certificaat te installeren in het standaardcertificaatopslag van Java dan de vlaggen door te -Djavax.net.ssl.trustStore=<keystore> -Djavax.net.ssl.trustStorePassword="<password>" geven. De opgenomen Java Demo-toepassing ( https://localhost:8081/_explorer/index.html ) is bijvoorbeeld afhankelijk van het standaardcertificaatopslag.

Volg de instructies in Een certificaat toevoegen aan het Java-certificaatopslag om het X.509-certificaat te importeren in het standaard-Java-certificaatopslag. Houd er rekening mee dat u in de map %JAVA_HOME% werkt bij het uitvoeren van keytool. Nadat het certificaat is geïmporteerd in het certificaatopslag, kunnen clients voor de API van SQL en Azure Cosmos DB voor MongoDB verbinding maken met de Azure Cosmos DB Emulator.

U kunt ook het volgende bash-script uitvoeren om het certificaat te importeren:

#!/bin/bash

# If emulator was started with /AllowNetworkAccess, replace the below with the actual IP address of it:
EMULATOR_HOST=localhost
EMULATOR_PORT=8081
EMULATOR_CERT_PATH=/tmp/cosmos_emulator.cert
openssl s_client -connect ${EMULATOR_HOST}:${EMULATOR_PORT} </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > $EMULATOR_CERT_PATH
# delete the cert if already exists
sudo $JAVA_HOME/bin/keytool -cacerts -delete -alias cosmos_emulator
# import the cert
sudo $JAVA_HOME/bin/keytool -cacerts -importcert -alias cosmos_emulator -file $EMULATOR_CERT_PATH

Zodra het TLS/SSL-certificaat 'CosmosDBEmulatorCertificate' is geïnstalleerd, moet uw toepassing verbinding kunnen maken en de lokale Azure Cosmos DB Emulator. Als u problemen hebt, kunt u het artikel SSL/TLS-verbindingen debuggen volgen. In de meeste gevallen wordt het certificaat mogelijk niet geïnstalleerd in het %JAVA_HOME%/jre/lib/security/cacerts-opslag. Als u bijvoorbeeld meerdere versies van Java hebt geïnstalleerd, gebruikt uw toepassing mogelijk een ander cacerts-opslag dan de versie die u hebt bijgewerkt.

Het certificaat gebruiken met Python-apps

Wanneer u vanuit Python-apps verbinding maakt met de emulator, is TLS-verificatie uitgeschakeld. De Python-SDK (versie 2.0.0 of hoger) voor de SQL-API probeert standaard niet het TLS/SSL-certificaat te gebruiken bij het maken van verbinding met de lokale emulator. Als u echter TLS-validatie wilt gebruiken, kunt u de voorbeelden in de documentatie over Python-socket-wrappers volgen.

Het certificaat gebruiken in Node.js

Wanneer u verbinding maakt met de emulator Node.js SDK's, wordt TLS-verificatie uitgeschakeld. De Node.js SDK (versie 1.10.1 of hoger) voor de SQL-API probeert standaard niet het TLS/SSL-certificaat te gebruiken bij het maken van verbinding met de lokale emulator. Als u echter TLS-validatie wilt gebruiken, kunt u de voorbeelden in deNode.js volgen.

Emulatorcertificaten roteren

U kunt het opnieuw instellen van de emulatorcertificaten forceren door Gegevens opnieuw instellen te selecteren in de Azure Cosmos DB Emulator wordt uitgevoerd in het Windows vak. Houd er rekening mee dat met deze actie ook alle gegevens worden gewist die lokaal zijn opgeslagen door de emulator.

Gegevens herstellen met de lokale emulator van Azure Cosmos DB

Als u het certificaat in het Java-certificaatopslag hebt geïnstalleerd of ergens anders hebt gebruikt, moet u het certificaat opnieuw importeren met de huidige certificaten. Uw toepassing kan pas verbinding maken met de lokale emulator als u de certificaten hebt bijgewerkt.

Volgende stappen