Konfigurasikan sertifikat klien untuk mengaktifkan otentikasi TLS timbal balik (mTLS) antara klien dan POP Edge Security Acceleration (ESA), sehingga memperkuat keamanan akses.
Use cases
mTLS cocok untuk skenario berkeamanan tinggi yang memerlukan verifikasi identitas kuat untuk kedua pihak yang berkomunikasi.
Kapan menggunakan mTLS:
-
Kedua pihak merupakan entitas yang dikontrol, seperti layanan, perangkat, atau sistem.
-
Anda memerlukan pengikatan identitas yang kuat dan persisten, bukan token sementara.
-
Anda dapat mengelola infrastruktur kunci publik (Public Key Infrastructure/PKI) secara terpusat, termasuk CA, distribusi sertifikat, dan pencabutan sertifikat.
Use case umum:
-
Otentikasi antar layanan dalam arsitektur microservices, seperti verifikasi identitas timbal balik antara layanan pesanan dan layanan pembayaran. Teknologi umum: Istio, Linkerd, dan Kubernetes.
-
Koneksi dari API gateway ke origin, seperti API internal perusahaan, open banking, atau integrasi SaaS pihak ketiga.
-
Komunikasi perangkat IoT ke cloud.
-
Akses zero trust di jaringan korporat, menggantikan model kepercayaan VPN tradisional.
-
Sistem keuangan, pembayaran, dan kesehatan yang harus mematuhi standar PCI-DSS, HIPAA, atau GDPR.
Kapan tidak menggunakan mTLS:
-
Website publik (e-commerce, berita) yang diakses oleh browser standar. Manajemen sertifikat tidak praktis bagi pengguna umum.
-
API REST terbuka tanpa kebutuhan identitas kuat. Gunakan OAuth 2.0 atau API key sebagai gantinya.
-
Lingkungan pengujian berkeamanan rendah. TLS satu arah dengan autentikasi dasar lebih sederhana.
Cara kerja mTLS
Di ESA, mTLS hanya berlaku antara klien dan POP ESA. POP menghentikan proses jabat tangan TLS, memverifikasi sertifikat klien, lalu meneruskan permintaan ke origin tanpa meneruskan sertifikat tersebut.
Untuk mTLS end-to-end di mana sertifikat klien diteruskan ke origin, gunakan Layer 4 proxy (paket Enterprise). Proxy ini meneruskan trafik TCP dalam mode pass-through tanpa menghentikan TLS.
Terbitkan sertifikat klien
Gunakan CA yang disediakan oleh ESA untuk membuat sertifikat klien dan men-deploy-nya ke aplikasi mobile Anda. ESA menghasilkan CA unik per akun, dan semua sertifikat dari CA ini secara otomatis dipercaya oleh POP ESA.
Masa berlaku sertifikat default adalah satu tahun.
Buat sertifikat
-
Di Konsol ESA, buka Websites. Di kolom Website, klik situs target.
-
Di panel navigasi sebelah kiri, pilih . Klik Create Certificate.
-
Berdasarkan kebutuhan Anda, pilih metode CSR Generation, Private Key Type, dan Certificate Validity, lalu klik OK.
PentingESA tidak menyimpan sertifikat atau kunci privat, dan keduanya tidak dapat diambil kembali setelah Anda menutup kotak dialog ini. Di kotak dialog pratinjau sertifikat, klik Copy Certificate dan Copy Private Key untuk menyalin kontennya ke klien Anda.
Kaitkan hostname
Bind sertifikat klien ke hostname untuk mengaktifkan mTLS. Hanya klien dengan sertifikat valid yang dapat mengakses hostname yang telah di-bind.
-
Di Konsol ESA, buka Websites. Di kolom Website, klik situs target.
-
Di panel navigasi sebelah kiri, pilih .
-
Di bagian Hostname, klik Configure. Di kotak dialog yang muncul, masukkan hostname lalu klik OK.
Catatan-
Anda dapat memasukkan maksimal 50 hostname sekaligus.
-
Hostname harus terkait dengan situs yang dipilih.
-
Cabut sertifikat
Revoke sertifikat yang tidak lagi diperlukan atau telah dikompromikan.
-
Di Konsol ESA, buka Websites. Di kolom Website, klik situs target.
-
Di panel navigasi sebelah kiri, pilih .
-
Di daftar , temukan sertifikat yang ingin Anda revoke, lalu klik Revoke di kolom Actions.
-
Di kotak dialog yang muncul, centang kotak I confirm that the certificate is no longer required, lalu klik Yes.
Gunakan CA kustom
Selain menggunakan sertifikat dari CA ESA, Anda juga dapat menggunakan CA privat milik Anda sendiri.
Hanya tersedia melalui OpenAPI. Setiap paket mendukung hingga lima sertifikat CA.
Prosedur
-
Panggil UploadClientCaCertificate untuk mengunggah sertifikat root CA Anda. Catat ID sertifikat yang dikembalikan.
-
Panggil SetClientCertificateHostnames untuk meng-bind sertifikat CA ke hostname. Validasi mTLS hanya berlaku untuk hostname yang telah di-bind.
-
Operasi API lainnya untuk sertifikat mTLS kustom:
API
Description
Mengunggah sertifikat CA yang diterbitkan secara kustom.
Menampilkan daftar semua sertifikat CA kustom yang telah diunggah.
Menghapus sertifikat CA yang diterbitkan secara kustom.
Menanyakan detail sertifikat CA kustom tertentu.
Meng-bind hostname ke sertifikat CA kustom.
Menanyakan hostname yang di-bind ke sertifikat CA kustom tertentu.
Blokir permintaan autentikasi yang gagal
Konfigurasikan aturan Web Application Firewall (WAF) untuk memblokir permintaan yang gagal dalam autentikasi sertifikat klien.
Prosedur
-
Di Konsol ESA, buka Websites. Di kolom Website, klik situs target.
-
Di panel navigasi sebelah kiri, pilih untuk membuka halaman konfigurasi aturan kustom.
-
Konfigurasikan aturan WAF kustom.
-
Atur Client Certificate Verified ke Off
. -
Di bidang Hostname, masukkan hostname tempat Anda ingin menerapkan aturan ini.
PentingAnda harus mengonfigurasi kondisi hostname. Jika tidak, aturan ini akan memblokir semua permintaan yang tidak menggunakan atau gagal dalam autentikasi sertifikat klien.
-
-
Atur Action ke Block, atau pilih aksi lain sesuai kebutuhan Anda.
-
Klik OK untuk menambahkan aturan.
Permintaan ke hostname yang ditentukan yang gagal atau melewatkan autentikasi sertifikat klien akan diblokir dengan kode status 403.
Verifikasi
-
Permintaan tanpa sertifikat klien diblokir dengan kode status 403.

-
Permintaan dengan sertifikat klien ESA yang valid berhasil. Ganti hostname, path sertifikat, dan path kunci dengan nilai Anda sendiri.
curl -v "https://example.com" --cert ./example.crt --key ./example.key * Trying 198.51.100.10... * TCP_NODELAY set * Connected to example.com (198.51.100.10) port 443 (#0) * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * TLSv1.2 (OUT), TLS Unknown, Certificate Status (22): * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * NPN, negotiated HTTP1.1 * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Request CERT (13): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Certificate (11): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS handshake, CERT verify (15): * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.2 (OUT), TLS handshake, Next protocol (67): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * Server certificate: * subject: CN=example.com * start date: Jul 31 00:00:00 2024 GMT * expire date: Jul 31 23:59:59 2025 GMT * subjectAltName: host "example.com" matched cert's "example.com" * issuer: C=US; O=Example CA; CN=Example DV TLS CA * SSL certificate verify ok. > GET / HTTP/1.1 > Host: example.com > User-Agent: curl/7.74.0 > Accept: */*