A Azure Cosmos DB Emulator tanúsítványok exportálása Java-, Python- és Node.js alkalmazásokhoz

A következőkre vonatkozik: SQL API CASSANDRA API Gremlin API Table API Azure Cosmos db API a MongoDB

Az Azure Cosmos DB Emulator helyi környezetet biztosít, amely az Azure Cosmos DB szolgáltatást emulálja a fejlesztéshez. Azure Cosmos DB Emulator csak a TLS-kapcsolatokon keresztüli biztonságos kommunikációt támogatja.

A helyi Azure Cosmos DB az emulátor első futtatásakor jönnek létre tanúsítványok. Két tanúsítvány van. Az egyik a helyi emulátorhoz való csatlakozásra, a másik az emulátor adatainak alapértelmezett titkosítására használatos az emulátorban. Az exportálandó tanúsítvány a csatlakozáshoz való. Ennek felhasználóbarát neve "DocumentDBEmulatorCertificate".

Ha az emulátort különböző nyelveken (például Java, Python vagy Node.js) fejleszt alkalmazásokkal, exportálni kell az emulátor tanúsítványát, és importálni kell a szükséges tanúsítványtárolóba.

A .NET nyelv és a futásidő a Windows tanúsítványtárolót használja a Azure Cosmos DB helyi emulátorhoz való biztonságos csatlakozáshoz, ha az alkalmazást egy Windows operációs rendszer gazdagépén futtatják. A többi nyelv saját módszert használ a tanúsítványok kezelésére és használatára. A Java például a saját tanúsítványtárolójáthasználja, a Python szoftvercsatorna-burkolókat használ, Node.js tlsSocketet használ.

Ez a cikk bemutatja, hogyan exportálhatja a TLS-/SSL-tanúsítványokat olyan különböző nyelveken és futásidejű környezetekben való használatra, amelyek nem integrálhatók a Windows tanúsítványtárolóval. Az emulátorról a Fejlesztés és tesztelés az Azure Cosmos DB Emulator használatával című cikk ír bővebben.

Az Azure Cosmos DB TLS-/SSL-tanúsítvány exportálása

Exportálni kell az emulátor tanúsítványát az emulátor végpontjának olyan nyelvekből és futásidejű környezetekből való sikeres használhatja, amelyek nem integrálhatók az Windows tanúsítványtárolóval. A tanúsítványt a tanúsítványkezelő Windows exportálhatja. A "DocumentDBEmulatorCertificate" tanúsítvány BASE-64 kódolású X.509 -fájlként (.cer) való exportálásához kövesse az alábbi részletes utasításokat:

  1. Indítsa el a Windows Tanúsítványkezelőjét a certlm.msc futtatásával, nyissa meg a Személyes->Tanúsítványok mappát, majd nyissa meg a DocumentDbEmulatorCertificate nevű tanúsítványt.

    Azure Cosmos DB helyszíni emulátor 1. exportálási lépés

  2. Kattintson a Részletek, majd az OK lehetőségre.

    Azure Cosmos DB helyszíni emulátor 2. exportálási lépés

  3. Kattintson a Másolás fájlba... lehetőségre.

    Azure Cosmos DB helyszíni emulátor 3. exportálási lépés

  4. Kattintson a Tovább gombra.

    Azure Cosmos DB helyszíni emulátor 4. exportálási lépés

  5. Kattintson a Nem, nem akarom exportálni a titkos kulcsomat lehetőségre, majd a Tovább gombra.

    Azure Cosmos DB helyszíni emulátor 5. exportálási lépés

  6. Kattintson a Base-64 kódolású X.509 (.CER) lehetőségre, majd a Tovább gombra.

    Azure Cosmos DB helyszíni emulátor 6. exportálási lépés

  7. Nevezze el a tanúsítványt. Ebben a példában a név documentdbemulatorcert. Végül kattintson a Tovább lehetőségre.

    Azure Cosmos DB helyszíni emulátor 7. exportálási lépés

  8. Kattintson a Finish (Befejezés) gombra.

    Azure Cosmos DB helyszíni emulátor 8. exportálási lépés

A tanúsítvány használata Java-alkalmazásokkal

Java-alapú ügyfelet használó Java-alkalmazások vagy MongoDB-alkalmazások futtatásakor egyszerűbb telepíteni a tanúsítványt a Java alapértelmezett tanúsítványtárolójában, mint a -Djavax.net.ssl.trustStore=<keystore> -Djavax.net.ssl.trustStorePassword="<password>" jelzők átadása. A mellékelt Java bemutatóalkalmazás ( ) például https://localhost:8081/_explorer/index.html az alapértelmezett tanúsítványtárolótól függ.

Az X.509-tanúsítvány alapértelmezett Java-tanúsítványtárolóba importáláshoz kövesse a Tanúsítvány hozzáadása a Java-tanúsítványtárolóhoz útmutatót. Ne feledje, hogy a keytool futtatásakor a %JAVA_HOME% könyvtárban fog dolgozni. Miután importálta a tanúsítványt a tanúsítványtárolóba, a SQL-ügyfelek és Azure Cosmos DB MongoDB API-ja képes lesz csatlakozni a Azure Cosmos DB Emulator.

Másik lehetőségként a következő Bash-szkript futtatásával importálhatja a tanúsítványt:

#!/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

A "CosmosDBEmulatorCertificate" TLS-/SSL-tanúsítvány telepítése után az alkalmazásnak képesnek kell lennie csatlakozni a helyi Azure Cosmos DB Emulator. Ha bármilyen probléma ad, kövesse az SSL-/TLS-kapcsolatok hibakeresésével kapcsolatos cikket. A legtöbb esetben előfordulhat, hogy a tanúsítvány nincs telepítve a %JAVA_HOME%/jre/lib/security/cacerts tárolóba. Ha például a Java több telepített verziójával is van, előfordulhat, hogy az alkalmazás a frissítetttől eltérő cacerts tárolót használ.

A tanúsítvány használata Python-alkalmazásokkal

Amikor Python-alkalmazásokból csatlakozik az emulátorhoz, a TLS-ellenőrzés le van tiltva. Alapértelmezés szerint a SQL API-hoz készült Python SDK (2.0.0-s vagy újabb verzió) nem próbálja meg használni a TLS-/SSL-tanúsítványt a helyi emulátorhoz való csatlakozáskor. Ha azonban TLS-érvényesítést szeretne használni, kövesse a Python szoftvercsatorna-burkolók dokumentációjában található példákat.

A tanúsítvány használata a Node.js-ben

Amikor az emulátorhoz Node.js, a TLS-ellenőrzés le van tiltva. Alapértelmezés szerint a SQL API-hoz készültNode.js SDK (1.10.1-es vagy újabb verzió) nem próbálja meg használni a TLS-/SSL-tanúsítványt a helyi emulátorhoz való csatlakozáskor. Ha azonban TLS-érvényesítést szeretne használni, kövesse az alábbi dokumentációbanNode.js példákat.

Emulátortanúsítványok elforgatása

Kényszerítheti az emulátortanúsítványok újragenerálását az Adatok alaphelyzetbe állítása lehetőség választásával a Azure Cosmos DB Emulator tálcán futó Windows kiválasztásával. Vegye figyelembe, hogy ez a művelet az emulátor által helyben tárolt összes adatot is törli.

Azure Cosmos DB helyszíni emulátor adatok alaphelyzetbe állítása

Ha telepítette a tanúsítványt a Java tanúsítványtárolóba, vagy máshol használta őket, újra importálni kell őket az aktuális tanúsítványokkal. Az alkalmazás nem tud csatlakozni a helyi emulátorhoz, amíg nem frissíti a tanúsítványokat.

Következő lépések