全部产品
Search
文档中心

Microservices Engine:Aktifkan TLS untuk Instance MSE Nacos

更新时间:Jul 06, 2025

Mesin Nacos mendukung Transport Layer Security (TLS) untuk melindungi keamanan data yang ditransmisikan. TLS adalah protokol kriptografi umum yang dirancang untuk memastikan keamanan data dalam komunikasi jaringan. Setelah fitur TLS diaktifkan, semua data yang ditransmisikan antara klien dan server Nacos dienkripsi guna mencegah pencurian atau kerusakan informasi sensitif selama transmisi.

Prasyarat

  • Microservices Engine (MSE) telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktifkan MSE.

  • Mesin Nacos versi 2.1.2.1 atau lebih baru telah dibuat. Untuk informasi lebih lanjut, lihat Buat mesin Nacos. Jika versi mesin lebih lama dari 2.1.2.1, tingkatkan versi mesin ke 2.1.2.1 atau lebih baru. Untuk informasi lebih lanjut tentang cara meningkatkan versi mesin, lihat Tingkatkan versi Nacos.

  • Versi Java Development Kit (JDK) adalah 8u252 atau lebih baru.

    Catatan

    JDK versi sebelum 8u252 tidak kompatibel dengan TLS. Oleh karena itu, Anda harus meningkatkan JDK tersebut ke 8u252 atau lebih baru. Jika versi JDK tidak dapat ditingkatkan, Anda dapat menggunakan klien Nacos yang tidak disertakan dengan JDK. Untuk informasi lebih lanjut, lihat Bagaimana cara menggunakan klien Nacos yang tidak disertakan dengan JDK? dalam topik ini.

    • Jika klien Nacos tidak disertakan dengan JDK, Anda dapat menggunakan OpenSSL sebagai penyedia SSL. Dalam hal ini, Anda harus menghapus parameter nacos.remote.client.rpc.tls.provider.

    • Untuk klien Nacos yang tidak disertakan dengan JDK, paket pihak ketiga yang diperlukan tidak di-shade. Oleh karena itu, Anda mungkin perlu menyelesaikan konflik paket.

Langkah 1: Modifikasi parameter Nacos

  1. Masuk ke Konsol MSE, dan pilih wilayah di bilah navigasi atas.

  2. Di panel navigasi sisi kiri, pilih Microservices Registry > Instances. Klik nama instance tersebut.

  3. Di panel navigasi sisi kiri, klik Parameter Settings. Pada halaman yang muncul, klik Edit, atur parameter TLSEnabled menjadi Yes, lalu klik Save and Restart Instance.

    Setelah Anda memulai ulang instance Nacos, server dapat mendukung klien Nacos yang mendukung TLS.

Langkah 2: Tingkatkan klien Nacos

Catatan

Klien Nacos versi 2.2.3 atau lebih baru mendukung TLS.

  1. Tingkatkan versi klien Nacos ke 2.2.3. Contoh kode:

    <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client</artifactId>
        <version>2.2.3</version>
    </dependency>
  2. Konfigurasikan parameter terkait TLS untuk mengaktifkan TLS.

    Anda dapat mengonfigurasi parameter terkait TLS menggunakan metode berikut sesuai urutan prioritas: file .properties > parameter JVM > variabel lingkungan. Pilih metode yang sesuai dengan kebutuhan bisnis Anda.

    • Gunakan file .properties. Saat membuat NacosConfigService atau NacosNamingService, tentukan parameter terkait TLS di file .properties.

      • properties.put("nacos.remote.client.rpc.tls.enable","true");

      • properties.put("nacos.remote.client.rpc.tls.trustAll","true");

      • properties.put("nacos.remote.client.rpc.tls.provider","JDK");

      Metode ini memiliki prioritas lebih tinggi daripada metode mengonfigurasi parameter JVM dan variabel lingkungan. Gunakan metode ini untuk mengonfigurasi parameter terkait TLS untuk NacosConfigService dan NacosNamingService.

    • Konfigurasikan parameter JVM.

      • -Dnacos.remote.client.rpc.tls.enable=true

      • -Dnacos.remote.client.rpc.tls.trustAll=true

      • -Dnacos.remote.client.rpc.tls.provider=JDK

      Metode ini digunakan pada level proses Java Virtual Machine (JVM). Dalam proses JVM, parameter JVM terkait TLS berlaku untuk NacosConfigService dan NacosNamingService yang tidak menentukan parameter terkait TLS di file .properties.

    • Konfigurasikan variabel lingkungan.

      • nacos_remote_client_rpc_tls_enable=true

      • nacos_remote_client_rpc_tls_trustAll=true

      • nacos_remote_client_rpc_tls_provider=JDK

      Metode ini digunakan pada level server. Parameter terkait TLS yang tidak ditentukan dalam parameter JVM atau file .properties akan berlaku.

  3. Konfirmasikan bahwa TLS telah diaktifkan.

    1. Lihat log startup klien Nacos.

      Saat klien Nacos mulai, parameter konfigurasi terdaftar di file remote.log di direktori {user.home}/logs/nacos/.

      2023-04-06 09:56:56.539 INFO [com.alibaba.nacos.client.Worker:c.a.n.c.r.c.g.GrpcClient] grpc client connection server:mse-xxx.nacos-ans.mse.aliyuncs.com ip,serverPort:9848,grpcTslConfig:{"sslProvider":"","enableTls":true,"mutualAuthEnable":false,"trustAll":true}

      "enableTls":true menunjukkan bahwa TLS telah diaktifkan. Jika klien berhasil mulai dan NacosConfigService membaca dan menulis data seperti yang diharapkan, TLS diaktifkan untuk komunikasi data.

    2. Jalankan perintah tcpdump untuk menangkap paket.

      Anda dapat menjalankan perintah tcpdump untuk menangkap paket dan menentukan direktori tempat file keluaran disimpan dalam perintah. Misalnya, jika Anda menjalankan perintah tcpdump berikut, konten yang ditangkap disimpan di file tcptrace.cap di direktori /tmp/. Anda dapat menyesuaikan nama file dan direktori.

      sudo tcpdump -i any -w /tmp/tcptrace.cap -p 9848

      Gunakan alat analitik paket seperti Wireshark untuk mengurai file di atas. Jika paket yang ditangkap adalah paket TCP/TLS, TLS diaktifkan.

FAQ

Bagaimana cara menggunakan klien Nacos yang tidak disertakan dengan JDK?

Tambahkan dependensi terkait. Contoh dependensi:

<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
    <version>2.2.3</version>
    <classifier>pure</classifier>
</dependency>
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-common</artifactId>
    <version>2.2.3</version>
</dependency>
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-api</artifactId>
    <version>2.2.3</version>
</dependency>

Apakah klien Nacos versi sebelum 2.2.3 mendukung TLS setelah TLS diaktifkan untuk mesin Nacos?

Klien Nacos versi sebelum 2.2.3 tidak mendukung TLS dalam kasus ini. Anda harus meningkatkan versi klien Nacos ke 2.2.3 atau lebih baru.

Apakah mesin Nacos yang mendukung TLS kompatibel dengan klien Nacos versi sebelum 2.2.3?

Secara default, mesin Nacos yang mendukung TLS kompatibel dengan klien Nacos versi sebelum 2.2.3.

Apakah instance MSE Nacos mendukung TLS satu arah atau mTLS?

Instance MSE Nacos mendukung TLS satu arah. Klien mengotentikasi server, tetapi server tidak mengotentikasi klien.

Mengapa klien menggunakan mode trust-all?

Mode trust-all memberikan cara sederhana bagi klien untuk mengaktifkan TLS. Jika Anda memiliki persyaratan keamanan yang lebih tinggi, Anda dapat bergabung dengan grup DingTalk (ID: 43525005207) untuk menghubungi insinyur dukungan teknis MSE dan meminta mereka menambahkan sertifikat CA resmi MSE dan menentukan sertifikat tersebut sebagai file CA tepercaya. Format parameter terkait TLS:

  • File .properties: nacos.remote.client.rpc.tls.trustCollectionChainPath=file:{filePath}

  • Parameter JVM: -Dnacos.remote.client.rpc.tls.trustCollectionChainPath=file:{filePath}

  • Variabel lingkungan: nacos_remote_client_rpc_tls_trustCollectionChainPath=file:{filePath}

Catatan

Prioritas parameter: File .properties > Parameter JVM > Variabel lingkungan.

Mengapa parameter terkait TLS yang ditentukan dalam file .properties tidak berlaku?

Jika Anda menentukan parameter terkait TLS dalam file .properties, nilai properti harus bertipe STRING. Nilai properti bertipe BOOLEAN tidak didukung.

  • Contoh benar: properties.put("nacos.remote.client.rpc.tls.enable","true");

  • Contoh salah: properties.put("nacos.remote.client.rpc.tls.enable",true);

Apa yang harus saya lakukan jika NotSslRecordException: not an SSL/TLS record dicatat di klien Nacos saya?

Informasi log menunjukkan bahwa paket yang dikembalikan oleh server tidak dalam format TLS. Masalah ini terjadi karena TLS tidak diaktifkan untuk server. Untuk mengatasi masalah ini, aktifkan TLS untuk server. Untuk informasi lebih lanjut, lihat Langkah 1: Modifikasi Parameter Nacos dalam topik ini.