Ekspor sertifikat Emulator Azure Cosmos DB untuk digunakan dengan aplikasi Java, Python, dan Node.js

BERLAKU UNTUK: Nosql MongoDB Cassandra Gremlin Meja

Emulator Azure Cosmos DB menyediakan lingkungan lokal yang meniru layanan Azure Cosmos DB untuk tujuan pengembangan. Emulator Azure Cosmos DB hanya mendukung komunikasi yang aman melalui koneksi TLS.

Sertifikat di emulator lokal Azure Cosmos DB dihasilkan saat pertama kali Anda menjalankan emulator. Ada dua sertifikat. Salah satunya digunakan untuk terhubung ke emulator lokal dan satunya lagi untuk mengelola enkripsi default data emulator dalam emulator. Sertifikat yang ingin Anda ekspor adalah sertifikat koneksi dengan nama yang mudah "DocumentDBEmulatorCertificate".

Saat Anda menggunakan emulator untuk mengembangkan aplikasi dalam berbagai bahasa seperti Java, Python, atau Node.js, Anda perlu mengekspor sertifikat emulator dan mengimpornya ke penyimpanan sertifikat yang diperlukan.

Bahasa dan runtime .NET menggunakan Windows Certificate Store untuk terhubung dengan aman ke emulator lokal Azure Cosmos DB saat aplikasi dijalankan pada host OS Windows. Bahasa lain memiliki metodenya sendiri untuk mengelola dan menggunakan sertifikat. Misalnya, Java menggunakan penyimpanan sertifikat sendiri, Python menggunakan pembungkus soket, dan Node.js menggunakan tlsSocket.

Artikel ini menunjukkan cara mengekspor sertifikat TLS/SSL untuk digunakan dalam berbagai bahasa dan lingkungan runtime yang tidak terintegrasi dengan Windows Certificate Store. Anda dapat membaca selengkapnya tentang emulator di Gunakan Emulator Azure Cosmos DB untuk pengembangan dan pengujian.

Mengekspor sertifikat TLS/SSL Azure Cosmos DB

Anda perlu mengekspor sertifikat emulator agar berhasil menggunakan titik akhir emulator dari bahasa dan lingkungan runtime yang tidak terintegrasi dengan Windows Certificate Store. Anda dapat mengekspor sertifikat menggunakan Pengelola Sertifikat Windows. Gunakan instruksi langkah demi langkah berikut untuk mengekspor sertifikat "DocumentDBEmulatorCertificate" sebagai file BASE-64 encoded X.509 (.cer) berkode:

  1. Mulai pengelola Sertifikat Windows dengan menjalankan certlm.msc dan buka folder Personal->Certificates lalu buka sertifikat dengan nama yang mudah tersebut DocumentDbEmulatorCertificate.

    Mengekspor emulator lokal Azure Cosmos DB langkah 1

  2. Klik pada Detail kemudian OK.

    Mengekspor emulator lokal Azure Cosmos DB langkah 2

  3. Klik Salin ke File... .

    Mengekspor emulator lokal Azure Cosmos DB langkah 3

  4. Klik Berikutnya.

    Mengekspor emulator lokal Azure Cosmos DB langkah 4

  5. Klik Tidak, jangan ekspor kunci privat, lalu klik Berikutnya.

    Mengekspor emulator lokal Azure Cosmos DB langkah 5

  6. Klik pada Base-64 berkode X.509 (.CER) lalu Berikutnya.

    Mengekspor emulator lokal Azure Cosmos DB langkah 6

  7. Beri nama pada sertifikat. Dalam hal ini documentdbemulatorcert lalu klik Berikutnya.

    Mengekspor emulator lokal Azure Cosmos DB langkah 7

  8. Klik Selesai.

    Mengekspor emulator lokal Azure Cosmos DB langkah 8

Menggunakan sertifikat dengan aplikasi Java

Saat menjalankan aplikasi Java atau aplikasi MongoDB yang menggunakan klien berbasis Java, lebih mudah untuk memasang sertifikat ke penyimpanan sertifikat default Java dibandingkan meneruskan -Djavax.net.ssl.trustStore=<keystore> -Djavax.net.ssl.trustStorePassword="<password>" bendera. Misalnya, aplikasi Java Demo yang disertakan (https://localhost:8081/_explorer/index.html) tergantung pada penyimpanan sertifikat default.

Ikuti instruksi di dalam Menambahkan Sertifikat ke Penyimpanan Sertifikat Java untuk mengimpor sertifikat X.509 ke dalam penyimpanan sertifikat Java default. Perlu diingat bahwa Anda akan bekerja di direktori %JAVA_HOME% saat menjalankan keytool. Setelah sertifikat diimpor ke penyimpanan sertifikat, klien untuk API SQL dan Azure Cosmos DB untuk MongoDB akan dapat terhubung ke Emulator Azure Cosmos DB.

Atau Anda dapat menjalankan skrip bash berikut untuk mengimpor sertifikat:

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

Setelah sertifikat TLS/SSL "CosmosDBEmulatorCertificate" TLS/SSL terpasang, aplikasi Anda harus dapat menghubungkan dan menggunakan Emulator Azure Cosmos DB lokal. Jika anda mengalami masalah, Anda dapat mengikuti artikel Penelusuran kesalahan koneksi SSL/TLS. Dalam kebanyakan kasus, sertifikat mungkin tidak dipasang ke penyimpanan %JAVA_HOME%/jre/lib/security/cacerts. Misalnya, jika Anda memiliki beberapa versi Java yang dipasang, aplikasi Anda mungkin menggunakan penyimpanan sertifikat yang berbeda dari yang Anda perbarui.

Menggunakan sertifikat dengan aplikasi Python

Saat menghubungkan ke emulator dari aplikasi Python, verifikasi TLS dinonaktifkan. Secara default , Python SDK untuk API untuk NoSQL tidak akan mencoba menggunakan sertifikat TLS/SSL saat menyambungkan ke emulator lokal. Namun, jika Anda ingin menggunakan validasi TLS, Anda dapat mengikuti contoh dalam dokumentasi pembungkus soket Python.

Cara menggunakan sertifikat di Node.js

Saat menghubungkan ke emulator dari aplikasi Node.js SDK, verifikasi TLS dinonaktifkan. Secara default Node.js SDK(versi 1.10.1 atau lebih tinggi) untuk API untuk NoSQL tidak akan mencoba menggunakan sertifikat TLS/SSL saat menyambungkan ke emulator lokal. Namun, jika Anda ingin menggunakan validasi TLS, Anda dapat mengikuti contoh dalam dokumentasi Node.js.

Memutar sertifikat emulator

Anda dapat memaksa regenerasi sertifikat emulator dengan memilih Atur Ulang Data dari Emulator Azure Cosmos DB yang berjalan di Windows Tray. Perhatikan bahwa tindakan ini juga akan menghapus semua data yang disimpan secara lokal oleh emulator.

Emulator lokal Azure Cosmos DB atur ulang data

Jika Anda telah memasang sertifikat ke dalam penyimpanan sertifikat Java atau menggunakannya di tempat lain, Anda perlu mengimpornya kembali menggunakan sertifikat saat ini. Aplikasi Anda tidak dapat terhubung ke emulator lokal sampai Anda memperbarui sertifikat.

Langkah berikutnya