Alibaba Cloud CDN hanya menerima sertifikat dan kunci privat dalam format PEM. Topik ini menjelaskan persyaratan format untuk setiap jenis sertifikat serta cara mengonversi sertifikat DER, P7B (PKCS#7), dan PFX (PKCS#12) ke format PEM.
Sebelum Anda mengunggah
Pastikan sertifikat dan kunci privat Anda memenuhi semua persyaratan berikut sebelum diunggah:
Persyaratan | Detail |
Format | Dikodekan dalam format PEM |
Panjang baris | Setiap baris, kecuali baris terakhir, berisi tepat 64 karakter |
Tidak ada karakter spasi | Tidak ada karakter spasi di antara penanda |
Urutan rantai sertifikat | Sertifikat server terlebih dahulu, diikuti oleh sertifikat perantara (hanya CA perantara) |
Sertifikat dari CA root
Sertifikat CA root kompatibel dengan server web seperti Apache, IIS, NGINX, dan Tomcat. Sertifikat SSL yang digunakan oleh CDN menggunakan format yang kompatibel dengan NGINX. File sertifikat memiliki ekstensi .crt dan file kunci privat memiliki ekstensi .key.
Buka file .crt di editor teks untuk melihat isi sertifikat.
Sertifikat harus sesuai dengan struktur berikut:
Diawali dengan
-----BEGIN CERTIFICATE-----Diakhiri dengan
-----END CERTIFICATE-----Setiap baris, kecuali baris terakhir, berisi tepat 64 karakter; baris terakhir boleh berisi hingga 64 karakter.
Unggah seluruh isi dari -----BEGIN CERTIFICATE----- hingga -----END CERTIFICATE-----.
Sertifikat dari CA perantara
Jika sertifikat Anda dikeluarkan oleh CA perantara, unggah seluruh rantai sertifikat: gabungkan sertifikat server dan semua sertifikat perantara ke dalam satu file.
-----BEGIN CERTIFICATE-----
(server certificate content)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(intermediate certificate content)
-----END CERTIFICATE-----Sertifikat server harus ditempatkan terlebih dahulu, diikuti oleh sertifikat perantara. Jangan tambahkan spasi di antara sertifikat. Semua sertifikat harus dalam format PEM.
Untuk menyusun rantai tersebut, buka setiap file .pem di editor teks dan tempel isinya secara berurutan: blok sertifikat server terlebih dahulu, lalu setiap blok sertifikat perantara secara langsung setelahnya tanpa spasi di antaranya.
Format kunci privat RSA
File kunci privat memiliki ekstensi .pem atau .key. Buka file tersebut di editor teks untuk melihat isinya.
Kunci privat RSA yang valid harus:
Diawali dengan
-----BEGIN RSA PRIVATE KEY-----Diakhiri dengan
-----END RSA PRIVATE KEY-----Setiap baris, kecuali baris terakhir, berisi tepat 64 karakter.
Buat kunci privat RSA baru
Jalankan perintah berikut untuk membuat kunci privat RSA 2048-bit. Output disimpan ke privateKey.pem.
openssl genrsa -out privateKey.pem 2048Konversi kunci privat yang diawali dengan `-----BEGIN PRIVATE KEY-----`
Jika kunci privat Anda diawali dengan -----BEGIN PRIVATE KEY----- alih-alih -----BEGIN RSA PRIVATE KEY-----, konversikan dengan OpenSSL sebelum diunggah:
openssl rsa -in old_server_key.pem -out new_server_key.pemUnggah isi file new_server_key.pem bersama sertifikat Anda.
Persyaratan panjang kunci
Panjang kunci privat RSA yang didukung oleh CDN adalah sebagai berikut:
Kunci RSA yang lebih pendek dari 2048 bit (misalnya 1024 bit) dianggap tidak aman dan dapat ditolak oleh validasi backend.
Gunakan panjang 2048 bit atau 4096 bit. Buat kunci dengan
openssl genrsa -out privateKey.pem 2048atau ganti
2048dengan4096.CDN juga mendukung sertifikat ECC (Elliptic Curve Cryptography). Jenis kurva ECC umum meliputi prime256v1 (secp256r1) dan secp384r1. Buat kunci privat ECC dengan:
openssl ecparam -genkey -name prime256v1 -out ecc_key.pemPanjang kunci maksimum dan dukungan kurva ECC yang tepat bergantung pada validasi API backend CDN. Jika Anda mengalami error terkait format kunci saat mengunggah, coba buat ulang dengan kunci RSA 2048-bit standar atau kunci ECC prime256v1.
Konversi format sertifikat
CDN hanya menerima sertifikat dalam format PEM. Gunakan OpenSSL untuk mengonversi dari format lain.
File.crtbisa berada dalam format PEM atau Distinguished Encoding Rules (DER). Buka file tersebut di editor teks — jika Anda melihat-----BEGIN CERTIFICATE-----, berarti file tersebut sudah dalam format PEM dan tidak perlu dikonversi. PEM adalah format teks yang dikodekan Base64; file kunci privat dalam format PEM menggunakan ekstensi.key.
DER ke PEM
DER umum digunakan pada platform Java.
Konversi sertifikat:
openssl x509 -inform der -in certificate.cer -out certificate.pemKonversi kunci privat:
openssl rsa -inform DER -outform pem -in privatekey.der -out privatekey.pemP7B (PKCS#7) ke PEM
P7B umum digunakan pada Windows Server dan Tomcat.
Konversi sertifikat:
openssl pkcs7 -print_certs -in incertificat.p7b -out outcertificate.cerBuka outcertificate.cer dan salin blok dari -----BEGIN CERTIFICATE----- hingga -----END CERTIFICATE-----. Unggah hanya blok tersebut.
File P7B tidak berisi kunci privat. Saat mengonfigurasi sertifikat SSL di Konsol CDN, masukkan hanya isi sertifikat dan biarkan bidang kunci privat kosong.
PFX (PKCS#12) ke PEM
PFX umum digunakan pada Windows Server.
Konversi sertifikat:
openssl pkcs12 -in certname.pfx -nokeys -out cert.pemKonversi kunci privat:
openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodesDukungan algoritma signature
Algoritma signature yang didukung oleh CDN bergantung pada aturan validasi API backend. Berikut referensi kompatibilitas untuk algoritma signature umum:
Algoritma signature yang direkomendasikan:
SHA-256 dengan RSA (sha256WithRSAEncryption)
SHA-384 dengan RSA
SHA-512 dengan RSA
ECDSA dengan SHA-256 (untuk sertifikat ECC)
Tidak direkomendasikan:
SHA-1 dengan RSA: SHA-1 telah ditandai tidak aman oleh browser utama, dan beberapa validasi backend dapat menolak sertifikat yang ditandatangani dengan SHA-1.
Konsol CDN tidak melakukan validasi algoritma signature di frontend. Kompatibilitas algoritma signature sepenuhnya ditentukan oleh API backend. Jika Anda menerima error saat mengunggah sertifikat yang menggunakan algoritma signature tidak umum, terbitkan ulang sertifikat tersebut menggunakan SHA-256 dengan RSA atau algoritma yang lebih aman.
Anda dapat memeriksa algoritma signature sertifikat Anda dengan:
openssl x509 -in your_cert.pem -noout -text | grep "Signature Algorithm"Outputnya akan tampak seperti Signature Algorithm: sha256WithRSAEncryption.