全部产品
Search
文档中心

Certificate Management Service:Apa itu kunci publik dan kunci privat?

更新时间:Nov 19, 2025

Topik ini menjelaskan konsep inti kunci publik dan kunci privat dalam enkripsi kunci asimetris serta cara kerjanya, sekaligus menunjukkan cara menggunakan antarmuka baris perintah (CLI) OpenSSL dan Keytool untuk membuat kunci privat RSA yang memenuhi persyaratan Layanan Manajemen Sertifikat Alibaba Cloud dan file Permintaan Penandatanganan Sertifikat (CSR) guna diajukan dalam permohonan sertifikat.

Definisi kunci publik dan kunci privat

Kunci publik dan kunci privat adalah pasangan kunci yang dihasilkan oleh algoritma enkripsi asimetris. Pasangan kunci ini memiliki atribut inti berikut:

  • Pemasangan unik

    • Kunci publik dan kunci privat dihasilkan sebagai pasangan yang tidak dapat dipisahkan.

    • Data yang dienkripsi dengan kunci publik hanya dapat didekripsi dengan kunci privat yang sesuai.

    • Data yang ditandatangani dengan kunci privat hanya dapat diverifikasi dengan kunci publik yang sesuai.

  • Tanggung jawab yang berbeda

    • Kunci publik: Dibagikan secara publik untuk mengenkripsi data dan memverifikasi tanda tangan.

    • Kunci privat: Dirahasiakan secara ketat untuk mendekripsi data dan membuat tanda tangan.

  • Aplikasi dalam SSL/TLS

    • Pertukaran kunci: Mengirimkan kunci sesi yang digunakan untuk enkripsi simetris secara aman.

    • Verifikasi identitas: Membuktikan bahwa server memiliki kunci privat yang sesuai dengan sertifikat.

    • Tanda tangan digital: Menjamin integritas data dan mengotentikasi sumbernya.

Penting

Kunci privat merupakan inti dari sistem keamanan. Jika kunci privat dikompromikan, semua komunikasi terenkripsi tidak lagi aman. Untuk informasi lebih lanjut tentang cara melindungi kunci privat, lihat Bagaimana Layanan Manajemen Sertifikat melindungi kunci privat?.

Cara kerja kunci publik, kunci privat, dan sertifikat SSL secara bersamaan

Saluran komunikasi SSL/TLS yang aman dibentuk dalam lima langkah:

  1. Penyajian sertifikat

    Server mengirimkan Sertifikat SSL-nya ke klien. Sertifikat tersebut berisi:

    • Kunci publik server

    • Informasi identitas, seperti Nama domain

    • Tanda tangan digital CA

    • Periode validitas sertifikat

  2. Verifikasi sertifikat (di sisi klien)

    • Klien memeriksa apakah sertifikat dikeluarkan oleh otoritas sertifikasi (CA) tepercaya.

      Catatan

      Proses verifikasi ini bergantung pada penyimpanan sertifikat root tepercaya yang pra-instal di sistem operasi atau browser klien. Klien memverifikasi rantai sertifikat dalam urutan berikut: sertifikat server, sertifikat perantara, dan sertifikat root. Sertifikat server dipercaya jika rantainya dapat dilacak kembali ke sertifikat root tepercaya di penyimpanan lokal.

    • Klien memeriksa apakah sertifikat masih dalam periode validitasnya.

    • Klien memeriksa apakah Nama domain pada sertifikat cocok dengan titik akhir yang diakses.

  3. Bukti kepemilikan kunci privat

    Server membuktikan bahwa ia memiliki kunci privat dengan salah satu cara berikut:

    • Pertukaran kunci RSA: Server menggunakan kunci privatnya untuk mendekripsi pre-master secret yang dikirim oleh klien.

    • Pertukaran kunci DH/ECDH: Server menggunakan kunci privatnya untuk menandatangani pesan ServerKeyExchange.

    • TLS 1.3: Server menggunakan kunci privatnya untuk menandatangani pesan CertificateVerify.

  4. Negosiasi kunci sesi

    Kedua pihak menggunakan informasi yang dipertukarkan untuk menghasilkan kunci sesi identik guna enkripsi simetris.

  5. Komunikasi terenkripsi

    Semua data selanjutnya dienkripsi menggunakan kunci sesi untuk enkripsi simetris. Hal ini menjamin efisiensi sekaligus keamanan.

Buat kunci privat

Layanan Sertifikat SSL Alibaba Cloud mensyaratkan bahwa kunci privat memenuhi kondisi berikut:

  • Algoritma enkripsi: RSA

  • Panjang kunci: Minimal 2.048 bit

Anda dapat membuat kunci privat dengan salah satu cara berikut sesuai kebutuhan:

Catatan

Jika Anda membeli sertifikat dari Layanan Manajemen Sertifikat Alibaba Cloud, atur CSR Generation ke Automatic saat membeli, membuat, atau mengajukan sertifikat. Dalam hal ini, Anda tidak perlu membuat kunci privat atau file CSR.

Hasilkan kunci privat baru

Metode ini ideal untuk sebagian besar lingkungan non-Java, seperti Nginx atau Apache, atau saat Anda perlu membuat kunci dari awal.

  1. Dapatkan dan instal alat OpenSSL.

    Ambil paket instalasi dari situs web OpenSSL.

    Catatan

    Pastikan Anda menggunakan versi OpenSSL resmi yang didukung dan stabil, seperti 1.1.1 atau 3.x. Versi lama mungkin mengandung kerentanan keamanan yang telah diketahui. Anda dapat memeriksa versi saat ini dengan menjalankan perintah openssl version di terminal Anda.

  2. Hasilkan file kunci privat.

    Perintah berikut membuat file kunci privat berformat PEM bernama myprivate.pem yang menggunakan algoritma RSA dan panjang kunci tertentu. Jalankan hanya salah satu perintah berikut untuk menghasilkan kunci privat berdasarkan kebutuhan keamanan Anda.

    # Hasilkan kunci 2048-bit
    openssl genrsa -out myprivate.pem 2048
    
    # Hasilkan kunci 4096-bit yang lebih aman
    openssl genrsa -out myprivate.pem 4096
    
    # Hasilkan kunci privat yang dilindungi kata sandi (disarankan untuk skenario keamanan tinggi)
    openssl genrsa -aes256 -out myprivate.pem 4096

Ekstrak kunci privat dari Java Keystore (JKS) yang sudah ada

Gunakan metode ini jika Anda memiliki pasangan kunci yang disimpan dalam Java Keystore (.jks) menggunakan keytool dan perlu mengekspor kunci privat dalam format PEM. Misalnya, Anda mungkin perlu melakukan ini untuk mengonfigurasi lingkungan non-Java seperti Nginx, Apache, atau CDN. Anda dapat menggunakan salah satu metode berikut untuk mengekspor kunci.

Gunakan alat konversi format sertifikat Alibaba Cloud

Layanan Manajemen Sertifikat Alibaba Cloud menyediakan alat daring gratis untuk mengonversi keystore JKS menjadi file kunci privat dan sertifikat berformat PEM dalam satu langkah. Untuk informasi lebih lanjut, lihat Mengonversi format sertifikat.

Gunakan antarmuka baris perintah OpenSSL
  1. Konversi format JKS ke format PKCS12.

    CLI keytool tidak dapat langsung mengekspor kunci privat ke format PEM. Namun, Anda dapat terlebih dahulu mengonversinya ke format PKCS12 (.p12) yang lebih universal. Jalankan perintah berikut. Anda akan diminta memasukkan kata sandi keystore JKS sumber dan kata sandi baru untuk file PKCS12 tujuan.

    # -srckeystore mydomain.jks   : Menentukan nama file Java Keystore (JKS) sumber.
    # -destkeystore mydomain.p12  : Menentukan nama file PKCS12 tujuan yang akan dihasilkan.
    # -srcalias mydomain          : Menentukan alias asli entri kunci privat di keystore JKS. Ganti mydomain dengan alias aktual Anda.
    # -destalias mydomain         : Menentukan alias tujuan untuk entri kunci di file P12 baru. Biasanya sama dengan alias sumber.
    keytool -importkeystore -srckeystore mydomain.jks -destkeystore mydomain.p12 -deststoretype PKCS12 -srcalias mydomain -destalias mydomain
  2. Ekstrak kunci privat berformat PEM dari file PKCS12.

    Jika OpenSSL belum diinstal, ambil paket instalasi dari situs web OpenSSL dan instal.

    Catatan

    Pastikan Anda menggunakan versi OpenSSL resmi yang didukung dan stabil, seperti 1.1.1 atau 3.x. Versi lama mungkin mengandung kerentanan keamanan yang telah diketahui. Anda dapat memeriksa versi saat ini dengan menjalankan perintah openssl version di terminal Anda.

    Gunakan CLI openssl untuk mengekstrak kunci privat berformat PEM yang tidak terenkripsi dari file .p12 yang dibuat pada langkah sebelumnya. Jalankan perintah berikut. Anda akan diminta memasukkan kata sandi untuk file PKCS12 yang Anda tetapkan pada langkah sebelumnya.

    # File myprivate.pem adalah file kunci privat akhir yang Anda butuhkan.
    # -nodes: Jangan mengenkripsi kunci privat keluaran.
    # -nocerts: Jangan keluarkan sertifikat, hanya kunci privat.
    
    # Untuk OpenSSL 3.0 dan yang lebih baru, tambahkan parameter -legacy jika Anda mengalami masalah kompatibilitas mundur.
    openssl pkcs12 -in mydomain.p12 -nodes -nocerts -out myprivate.pem
    
    # Jika terjadi kesalahan "unsupported algorithm" atau dekripsi gagal di OpenSSL 3.x, coba tambahkan -legacy. Catatan: Ini mengaktifkan algoritma enkripsi yang sudah tidak digunakan lagi.
    openssl pkcs12 -in mydomain.p12 -nodes -nocerts -out myprivate.pem -legacy

File kunci privat yang diekspor adalah file teks berkode Privacy-Enhanced Mail (PEM). Isinya biasanya direpresentasikan dalam salah satu dari dua format berikut:

Format PKCS#1

Format PKCS#1 merupakan bagian dari standar kriptografi RSA dan mendefinisikan sintaks untuk kunci publik dan kunci privat RSA. Header file kunci privat adalah -----BEGIN RSA PRIVATE KEY-----.

-----BEGIN RSA PRIVATE KEY-----
(konten kunci dalam kode Base64)
-----END RSA PRIVATE KEY-----

Format PKCS#8

PKCS#8 adalah standar sintaks yang lebih umum untuk informasi kunci privat dan dapat berisi kunci privat untuk berbagai algoritma, seperti RSA dan ECC. Header file kunci privat adalah -----BEGIN PRIVATE KEY-----.

-----BEGIN PRIVATE KEY-----
(konten kunci dalam kode Base64)
-----END PRIVATE KEY-----
Catatan

Terlepas dari cara pembuatannya, selalu simpan file kunci privat Anda dengan aman. Jika kunci privat hilang atau dikompromikan, data apa pun yang dienkripsi dengan kunci publik yang sesuai berisiko didekripsi, dan sertifikat digital terkait menjadi tidak dapat digunakan.

Buat Permintaan Penandatanganan Sertifikat (CSR)

Untuk menggunakan kunci privat yang Anda buat sendiri saat membeli, membuat, atau mengajukan sertifikat di Layanan Manajemen Sertifikat, ikuti langkah-langkah berikut:

  1. Buat file CSR.

    Gunakan kunci privat Anda untuk membuat file Permintaan Penandatanganan Sertifikat (CSR). Jalankan perintah berikut. Perintah ini akan meminta Anda memasukkan informasi yang diperlukan, seperti negara, provinsi atau negara bagian, kota, organisasi, dan Common Name. Perintah ini menghasilkan file CSR Anda, bernama mydomain.csr.

    Catatan

    Common Name harus persis sama dengan Nama domain tempat Anda mengajukan sertifikat, seperti www.aliyun.com.

    # -key myprivate.pem: Menentukan file kunci privat yang Anda hasilkan pada langkah sebelumnya.
    # -out mydomain.csr: Menentukan nama file CSR yang dihasilkan.
    openssl req -new -key myprivate.pem -out mydomain.csr
  2. Gunakan file CSR yang dibuat pada langkah sebelumnya.

    Saat membeli, membuat, atau mengajukan sertifikat, atur CSR Generation ke Manual dan tempelkan isi file CSR Anda. Untuk informasi lebih lanjut, lihat Beli sertifikat komersial, Buat sertifikat SSL, dan Ajukan permohonan ke CA.