diff --git a/next.config.js b/next.config.js index f84b98c..aaaa9e7 100644 --- a/next.config.js +++ b/next.config.js @@ -4,7 +4,10 @@ const withNextra = require('nextra')({ }) module.exports = withNextra({ - output: 'export', + i18n: { + locales: ['en', 'id'], + defaultLocale: 'en', + }, images: { unoptimized: true, }, diff --git a/pages/_meta.json b/pages/_meta.json index b75a405..c574348 100644 --- a/pages/_meta.json +++ b/pages/_meta.json @@ -1,15 +1,10 @@ { - "index": { - "title": "Home", + "en": { "type": "page", "display": "hidden" }, - "guide": { - "title": "User Guide", - "type": "page" - }, - "developer": { - "title": "Developer API", - "type": "page" + "id": { + "type": "page", + "display": "hidden" } } \ No newline at end of file diff --git a/pages/en/_meta.json b/pages/en/_meta.json new file mode 100644 index 0000000..b75a405 --- /dev/null +++ b/pages/en/_meta.json @@ -0,0 +1,15 @@ +{ + "index": { + "title": "Home", + "type": "page", + "display": "hidden" + }, + "guide": { + "title": "User Guide", + "type": "page" + }, + "developer": { + "title": "Developer API", + "type": "page" + } +} \ No newline at end of file diff --git a/pages/developer/_meta.json b/pages/en/developer/_meta.json similarity index 100% rename from pages/developer/_meta.json rename to pages/en/developer/_meta.json diff --git a/pages/developer/endpoints.mdx b/pages/en/developer/endpoints.mdx similarity index 100% rename from pages/developer/endpoints.mdx rename to pages/en/developer/endpoints.mdx diff --git a/pages/developer/index.mdx b/pages/en/developer/index.mdx similarity index 100% rename from pages/developer/index.mdx rename to pages/en/developer/index.mdx diff --git a/pages/guide/_meta.json b/pages/en/guide/_meta.json similarity index 100% rename from pages/guide/_meta.json rename to pages/en/guide/_meta.json diff --git a/pages/guide/certificates/_meta.json b/pages/en/guide/certificates/_meta.json similarity index 100% rename from pages/guide/certificates/_meta.json rename to pages/en/guide/certificates/_meta.json diff --git a/pages/guide/certificates/download-install.mdx b/pages/en/guide/certificates/download-install.mdx similarity index 100% rename from pages/guide/certificates/download-install.mdx rename to pages/en/guide/certificates/download-install.mdx diff --git a/pages/guide/certificates/renewal.mdx b/pages/en/guide/certificates/renewal.mdx similarity index 100% rename from pages/guide/certificates/renewal.mdx rename to pages/en/guide/certificates/renewal.mdx diff --git a/pages/guide/certificates/request-new.mdx b/pages/en/guide/certificates/request-new.mdx similarity index 100% rename from pages/guide/certificates/request-new.mdx rename to pages/en/guide/certificates/request-new.mdx diff --git a/pages/guide/certificates/revocation.mdx b/pages/en/guide/certificates/revocation.mdx similarity index 100% rename from pages/guide/certificates/revocation.mdx rename to pages/en/guide/certificates/revocation.mdx diff --git a/pages/guide/certificates/view-details.mdx b/pages/en/guide/certificates/view-details.mdx similarity index 100% rename from pages/guide/certificates/view-details.mdx rename to pages/en/guide/certificates/view-details.mdx diff --git a/pages/guide/concepts/_meta.json b/pages/en/guide/concepts/_meta.json similarity index 100% rename from pages/guide/concepts/_meta.json rename to pages/en/guide/concepts/_meta.json diff --git a/pages/guide/concepts/pki-undamentals.mdx b/pages/en/guide/concepts/pki-undamentals.mdx similarity index 100% rename from pages/guide/concepts/pki-undamentals.mdx rename to pages/en/guide/concepts/pki-undamentals.mdx diff --git a/pages/guide/concepts/trust-architecture.mdx b/pages/en/guide/concepts/trust-architecture.mdx similarity index 100% rename from pages/guide/concepts/trust-architecture.mdx rename to pages/en/guide/concepts/trust-architecture.mdx diff --git a/pages/guide/getting-started/_meta.json b/pages/en/guide/getting-started/_meta.json similarity index 100% rename from pages/guide/getting-started/_meta.json rename to pages/en/guide/getting-started/_meta.json diff --git a/pages/guide/getting-started/access-dashboard.mdx b/pages/en/guide/getting-started/access-dashboard.mdx similarity index 100% rename from pages/guide/getting-started/access-dashboard.mdx rename to pages/en/guide/getting-started/access-dashboard.mdx diff --git a/pages/guide/getting-started/install-root-ca.mdx b/pages/en/guide/getting-started/install-root-ca.mdx similarity index 96% rename from pages/guide/getting-started/install-root-ca.mdx rename to pages/en/guide/getting-started/install-root-ca.mdx index 5a420bc..907bf0a 100644 --- a/pages/guide/getting-started/install-root-ca.mdx +++ b/pages/en/guide/getting-started/install-root-ca.mdx @@ -53,7 +53,7 @@ Select your distribution to get the optimized installation command: --- -import { DynamicInstallationGuide } from '../../../components/DynamicInstallationGuide' +import { DynamicInstallationGuide } from '../../../../components/DynamicInstallationGuide' ## Individual Certificate Installation diff --git a/pages/guide/index.mdx b/pages/en/guide/index.mdx similarity index 100% rename from pages/guide/index.mdx rename to pages/en/guide/index.mdx diff --git a/pages/guide/integrations/_meta.json b/pages/en/guide/integrations/_meta.json similarity index 100% rename from pages/guide/integrations/_meta.json rename to pages/en/guide/integrations/_meta.json diff --git a/pages/guide/integrations/smime.mdx b/pages/en/guide/integrations/smime.mdx similarity index 100% rename from pages/guide/integrations/smime.mdx rename to pages/en/guide/integrations/smime.mdx diff --git a/pages/guide/integrations/web-servers.mdx b/pages/en/guide/integrations/web-servers.mdx similarity index 100% rename from pages/guide/integrations/web-servers.mdx rename to pages/en/guide/integrations/web-servers.mdx diff --git a/pages/guide/troubleshooting/_meta.json b/pages/en/guide/troubleshooting/_meta.json similarity index 100% rename from pages/guide/troubleshooting/_meta.json rename to pages/en/guide/troubleshooting/_meta.json diff --git a/pages/guide/troubleshooting/browser-errors.mdx b/pages/en/guide/troubleshooting/browser-errors.mdx similarity index 100% rename from pages/guide/troubleshooting/browser-errors.mdx rename to pages/en/guide/troubleshooting/browser-errors.mdx diff --git a/pages/guide/troubleshooting/developer-tools.mdx b/pages/en/guide/troubleshooting/developer-tools.mdx similarity index 100% rename from pages/guide/troubleshooting/developer-tools.mdx rename to pages/en/guide/troubleshooting/developer-tools.mdx diff --git a/pages/en/index.mdx b/pages/en/index.mdx new file mode 100644 index 0000000..a45ad62 --- /dev/null +++ b/pages/en/index.mdx @@ -0,0 +1,3 @@ +import { LandingPage } from '../../components/LandingPage' + + diff --git a/pages/id/_meta.json b/pages/id/_meta.json new file mode 100644 index 0000000..5c87116 --- /dev/null +++ b/pages/id/_meta.json @@ -0,0 +1,15 @@ +{ + "index": { + "title": "Beranda", + "type": "page", + "display": "hidden" + }, + "guide": { + "title": "Panduan Pengguna", + "type": "page" + }, + "developer": { + "title": "Developer API", + "type": "page" + } +} \ No newline at end of file diff --git a/pages/id/developer/_meta.json b/pages/id/developer/_meta.json new file mode 100644 index 0000000..6084e96 --- /dev/null +++ b/pages/id/developer/_meta.json @@ -0,0 +1,4 @@ +{ + "index": "Dokumentasi API", + "endpoints": "Titik Akhir (Endpoints)" +} \ No newline at end of file diff --git a/pages/id/developer/endpoints.mdx b/pages/id/developer/endpoints.mdx new file mode 100644 index 0000000..f7c3143 --- /dev/null +++ b/pages/id/developer/endpoints.mdx @@ -0,0 +1,71 @@ +import { Tabs } from 'nextra/components' +import { Code, Terminal, Send, ShieldCheck } from 'lucide-react' + +# Titik Akhir (Endpoints) + +Gunakan titik akhir API berikut untuk melakukan integrasi programatik dengan layanan TrustLab. + +## Dasar URL +Semua permintaan API dilakukan ke: +`https://trustlab.dyzulk.com/api` + +--- + +## Pengambilan Sertifikat Publik + +Endpoint ini digunakan untuk mengambil informasi publik mengenai sertifikat atau CA. + +### 1. Unduh Root CA +Mengunduh sertifikat root pemegang kepercayaan utama. + +- **Endpoint**: `GET /ca/root/download` +- **Output**: File `trustlab-root.crt` + +### 2. Lihat Detail Sertifikat (via Serial) +Mendapatkan metadata sertifikat berdasarkan nomor serinya. + +- **Endpoint**: `GET /certificates/detail/{serial_number}` +- **Respon Contoh**: +```json +{ + "serial": "12345-ABCDE", + "common_name": "myserver.local", + "issuer": "TrustLab Intermediate CA", + "not_after": "2025-12-31T23:59:59Z", + "status": "VALID" +} +``` + +--- + +## Contoh Implementasi (cURL) + + + + ```bash + curl -O https://trustlab.dyzulk.com/api/ca/root/download + ``` + + + ```bash + curl https://trustlab.dyzulk.com/api/certificates/detail/99887766 + ``` + + + +--- + +## Status Respon API + +TrustLab menggunakan kode status HTTP standar: + +| Kode | Arti | +| :--- | :--- | +| `200 OK` | Permintaan berhasil. | +| `404 Not Found` | Sertifikat tidak ditemukan. | +| `500 Server Error` | Terjadi masalah pada database TrustLab. | + +--- + +> [!IMPORTANT] +> Fitur manajemen sertifikat penuh (Create, Revoke, Renew) via API saat ini masih dalam tahap **Beta Tertutup**. Silakan hubungi admin untuk mendapatkan akses API Key jika Anda memerlukannya untuk otomatisasi infrastruktur. diff --git a/pages/id/developer/index.mdx b/pages/id/developer/index.mdx new file mode 100644 index 0000000..b0c0c14 --- /dev/null +++ b/pages/id/developer/index.mdx @@ -0,0 +1,20 @@ +# Dokumentasi API Developer + +Gunakan API TrustLab untuk mengotomatiskan manajemen siklus hidup sertifikat dalam alur kerja pengembangan atau infrastruktur Anda. + +## Gambaran Umum + +API kami berbasis REST dan mengembalikan respon dalam format JSON. Saat ini, API mendukung operasi dasar untuk pengambilan informasi sertifikat publik. + +## Autentikasi + +Saat ini, endpoint publik untuk pengambilan sertifikat tidak memerlukan autentikasi API Key khusus. Namun, penggunaan secara massal untuk endpoint manajemen akan segera hadir. + +## Endpoint Utama + +- **[Daftar Endpoint](/id/developer/endpoints)**: Lihat daftar lengkap fungsi API yang tersedia saat ini. + +--- + +> [!NOTE] +> Dokumentasi API sedang dikembangkan lebih lanjut. Hubungi tim dukungan kami jika Anda memerlukan akses integrasi skala besar. diff --git a/pages/id/guide/_meta.json b/pages/id/guide/_meta.json new file mode 100644 index 0000000..4999756 --- /dev/null +++ b/pages/id/guide/_meta.json @@ -0,0 +1,8 @@ +{ + "index": "Panduan Pengguna", + "getting-started": "Mulai Cepat", + "concepts": "Konsep Inti", + "certificates": "Operasi Sertifikat", + "integrations": "Integrasi", + "troubleshooting": "Pemecahan Masalah" +} \ No newline at end of file diff --git a/pages/id/guide/certificates/_meta.json b/pages/id/guide/certificates/_meta.json new file mode 100644 index 0000000..007dfa2 --- /dev/null +++ b/pages/id/guide/certificates/_meta.json @@ -0,0 +1,7 @@ +{ + "request-new": "Minta Sertifikat Baru", + "download-install": "Unduh & Format", + "view-details": "Lihat Detail", + "renewal": "Proses Perpanjangan", + "revocation": "Pencabutan (Revocation)" +} \ No newline at end of file diff --git a/pages/id/guide/certificates/download-install.mdx b/pages/id/guide/certificates/download-install.mdx new file mode 100644 index 0000000..9efa6df --- /dev/null +++ b/pages/id/guide/certificates/download-install.mdx @@ -0,0 +1,43 @@ +# Unduh & Format (PEM, PFX, JKS) + +Setelah sertifikat Anda diterbitkan, Anda dapat mengunduhnya dalam berbagai format yang sesuai untuk server dan aplikasi yang berbeda. + +## Format yang Tersedia + +| Format | Ekstensi | Digunakan Untuk | +| :--- | :--- | :--- | +| **PEM (Nginx/Apache)** | `.crt`, `.key` | Server web Linux standar. Anda mendapatkan file Sertifikat dan Private Key terpisah. | +| **PFX / PKCS#12** | `.pfx`, `.p12` | IIS (Windows), Microsoft Exchange, Sertifikat Klien (S/MIME). Berisi key dan cert sekaligus. | +| **JKS (Java)** | `.jks` | Aplikasi Java (Tomcat, Spring Boot). | + +## Cara Mengunduh (Salin & Simpan) + +Dashboard memungkinkan Anda untuk menyalin data mentah sertifikat secara langsung. + +1. Buka menu **"My Certificates"** dan klik tombol **View (Ikon Mata)** pada sertifikat Anda. +2. **Sertifikat:** Gulir ke bagian "Certificate (CRT)" dan klik **Ikon Salin** di pojok kanan atas. Simpan ke dalam file bernama `domain.crt` atau `domain.pem`. +3. **Private Key:** Gulir ke bagian "Private Key (KEY)", klik **Show**, lalu klik **Ikon Salin**. Simpan ke dalam file bernama `domain.key`. + +> [!TIP] +> Gunakan editor teks murni (Notepad, VS Code, Nano) untuk menyimpan file-file ini. Jangan gunakan Word atau editor Rich Text. + +> [!WARNING] +> **Private Key** dihasilkan secara aman secara lokal di browser/server. Jika Anda menghilangkannya, kunci tersebut **TIDAK BISA** dipulihkan. Anda harus melakukan revoke dan menerbitkan ulang sertifikat. + +## Contoh Instalasi + +### Nginx (PEM) +```nginx +server { + listen 443 ssl; + server_name internal.app; + + ssl_certificate /etc/nginx/ssl/internal.app.crt; + ssl_certificate_key /etc/nginx/ssl/internal.app.key; +} +``` + +### Windows (PFX) +1. Klik dua kali file `.pfx` yang diunduh. +2. Ikuti "Certificate Import Wizard". +3. Saat diminta kata sandi, masukkan kata sandi yang Anda tetapkan saat mengunduh (atau kata sandi ekspor default yang disediakan di UI). diff --git a/pages/id/guide/certificates/renewal.mdx b/pages/id/guide/certificates/renewal.mdx new file mode 100644 index 0000000..e9c88ca --- /dev/null +++ b/pages/id/guide/certificates/renewal.mdx @@ -0,0 +1,60 @@ +import { Steps } from 'nextra/components' +import { RefreshCcw, Bell, ShieldCheck } from 'lucide-react' + +# Proses Perpanjangan + +Sertifikat SSL/TLS memiliki masa aktif yang terbatas. Di TrustLab, kami menyederhanakan proses perpanjangan (renewal) untuk memastikan layanan Anda tetap berjalan tanpa gangguan. + +## Kapan Harus Memperpanjang? + +- **Rekomendasi**: Lakukan perpanjangan **30 hari** sebelum sertifikat kadaluarsa. +- **Notifikasi**: TrustLab akan mengirimkan pengingat email otomatis ke akun Anda pada H-30, H-7, dan H-1 sebelum masa berlaku habis. + +--- + +## Proses Pembaruan + +Sertifikat memiliki masa berlaku untuk menjamin rotasi keamanan. TrustLab menyederhanakan proses pembaruan agar Anda tidak mengalami downtime. + +## Kapan Harus Memperbarui? +Anda akan menerima notifikasi email: +- **30 hari** sebelum kedaluwarsa. +- **7 hari** sebelum kedaluwarsa. +- **1 hari** sebelum kedaluwarsa. + +## Cara Memperbarui (Penerbitan Ulang Manual) + +Untuk memperbarui sertifikat, Anda cukup membuat sertifikat baru dengan nama domain yang sama. + + +### Buka Dashboard +Login ke [trustlab.dyzulk.com](https://trustlab.dyzulk.com) dan masuk ke menu **"Manage Certificates"**. + +1. Buka menu **Certificates** dan klik **"Generate New"**. +2. **Identity**: Masukkan **Common Name (CN) yang sama** dengan sertifikat Anda yang akan habis masa berlakunya. +3. **Generate**: Sistem akan menerbitkan sertifikat baru dengan masa berlaku yang segar. +4. **Ganti**: Unduh `.crt` baru (dan `.key` jika Anda tidak menggunakan kembali CSR) dan ganti file di server Anda. + + +> [!NOTE] +> Sertifikat lama akan tetap valid sampai habis masa berlakunya secara alami. Anda dapat menghapusnya dengan aman setelah memastikan sertifikat baru berfungsi. + +## Apa yang Terjadi Selanjutnya? +- **Sertifikat baru** dihasilkan dengan masa berlaku baru. +- **Private Key** tetap sama (jika "Reuse Key" dipilih) ATAU kunci baru dihasilkan (disarankan). +- Sertifikat lama tetap valid hingga tanggal kedaluwarsa aslinya (kecuali dicabut). + +> [!IMPORTANT] +> Anda harus **mengunduh dan menginstal sertifikat baru** di server Anda. Pembaruan **tidak terjadi otomatis** di sisi server kecuali Anda menggunakan integrasi ACME kami. + +--- + +## Penting: Mengapa Harus Perpanjang? + +Jika sertifikat kadaluarsa sebelum diganti: +- Browser akan memblokir akses ke situs Anda dengan pesan **"Your connection is not private"**. +- API internal akan gagal melakukan enkripsi (SSL Handshake Error). +- Pengguna akan kehilangan kepercayaan terhadap keamanan jaringan Anda. + +> [!TIP] +> Perpanjangan di TrustLab tidak mengubah Root CA Anda. Anda **tidak perlu** menginstal ulang Root CA di perangkat klien setiap kali Anda memperpanjang sertifikat server. diff --git a/pages/id/guide/certificates/request-new.mdx b/pages/id/guide/certificates/request-new.mdx new file mode 100644 index 0000000..2de323e --- /dev/null +++ b/pages/id/guide/certificates/request-new.mdx @@ -0,0 +1,51 @@ +import { Steps, Callout, Cards, Card } from 'nextra/components' +import { FileBadge, ShieldCheck, Globe, Code, Save, AlertTriangle } from 'lucide-react' + +# Menerbitkan Sertifikat Baru + +TrustLab menyediakan wizard yang disederhanakan untuk menghasilkan sertifikat SSL/TLS pribadi untuk infrastruktur internal Anda. + +## Prasyarat +Sebelum memulai, pastikan Anda memiliki: +* Akses akun TrustLab yang aktif. +* **Root CA** telah terinstal di perangkat Anda (agar mempercayai sertifikat yang diterbitkan). + +--- + + +### 1. Buka Menu Sertifikat +Akses halaman **Certificates**. Tampilan ini mencantumkan semua sertifikat aktif dan kedaluwarsa Anda. Klik tombol **"Generate New"** (atau "+") untuk memulai. + +![Certificates List](/images/guide/certificates-screen.png) + +### 2. Masukkan Detail Domain (Mode Default) +Secara default, Anda hanya perlu memberikan Identitas. Sistem akan mengisi otomatis metadata Organisasi & Lokasi. + +![Default Generation Modal](/images/guide/certificates-generate-modal-default-metadata-screen.png) + +* **Common Name (CN)**: Domain utama (misalnya, `app.internal`). +* **SANs**: Domain tambahan atau alamat IP. +* **Key Strength**: Pilih tingkat enkripsi. + ![Key Strength Selector](/images/guide/certificates-generate-modal-key-strength-focused-screen.png) + * **2048-bit**: Standar industri, kompatibel dengan semua perangkat. + * **4096-bit**: Keamanan lebih tinggi, sedikit lebih intensif pada CPU. + +### 3. Kustomisasi CSR (Kontrol Manual) +Aktifkan **"Manual Control"** jika Anda perlu menimpa bidang Identitas default (misalnya, untuk kantor cabang tertentu atau entitas hukum khusus). + +![Manual Control Modal](/images/guide/certificates-generate-modal-manual-control-screen.png) + +* **Organization (O)**: Ganti nama perusahaan default. +* **Locality (L) / State (ST)**: Atur data lokasi spesifik. +* **Country (C)**: Kode ISO Negara. + + +### 4. Terbitkan & Simpan +Klik **Generate**. +* **Certificate (.pem)** dan **Private Key (.key)** akan dihasilkan secara instan. +* Anda dapat menyalinnya segera atau mengaksesnya nanti dari halaman **Certificate Details**. + +}> + **Penyimpanan:** Private Key Anda disimpan dengan aman di server (dienkripsi). Anda dapat melihatnya kapan saja dengan mengklik **"View Details"** pada daftar sertifikat. + + diff --git a/pages/id/guide/certificates/revocation.mdx b/pages/id/guide/certificates/revocation.mdx new file mode 100644 index 0000000..90d6331 --- /dev/null +++ b/pages/id/guide/certificates/revocation.mdx @@ -0,0 +1,22 @@ +# Pencabutan (Revocation) + +Pencabutan membatalkan validitas sertifikat sebelum tanggal kedaluwarsanya. Ini sangat penting jika Private Key Anda bocor atau hilang. + +## Kapan Harus Mencabut? +- **Kebocoran Kunci (Key Compromise)**: Anda curiga seseorang telah mencuri Private Key Anda. +- **Perubahan Layanan**: Nama domain secara efektif tidak lagi menjadi milik layanan tersebut. +- **Kesalahan**: Sertifikat diterbitkan dengan detail yang salah. + +## Cara Menghapus / Mencabut + +Jika sertifikat bocor atau tidak lagi dibutuhkan, Anda dapat menghapusnya dari sistem. + +1. Buka daftar **Certificates**. +2. Cari sertifikat yang ingin dihapus. +3. Klik **Ikon Tempat Sampah** (Delete) di sisi kanan baris. +4. **Konfirmasi**: Ketik `DELETE` di modal konfirmasi untuk menghapus sertifikat dan private key-nya secara permanen dari TrustLab. + +![Delete Certificate Action](/images/guide/certificates_list_view_1767869137654.png) + +## CRL (Certificate Revocation List) +Setelah dicabut, nomor seri sertifikat akan ditambahkan ke TrustLab CRL. Semua klien yang memeriksa CRL akan segera menolak sertifikat tersebut. diff --git a/pages/id/guide/certificates/view-details.mdx b/pages/id/guide/certificates/view-details.mdx new file mode 100644 index 0000000..e929ef4 --- /dev/null +++ b/pages/id/guide/certificates/view-details.mdx @@ -0,0 +1,42 @@ +import { Steps } from 'nextra/components' +import { Search, Eye, Clipboard, ShieldAlert } from 'lucide-react' + +# Lihat Detail Sertifikat + +Setiap sertifikat di TrustLab memiliki metadata lengkap yang bisa Anda audit kapan saja untuk memastikan kesesuaian identitas dan keamanan. + +## Cara Melihat Detail + + +### Navigasi ke List +Di menu utama Dashboard, klik **"Manage Certificates"**. Anda akan melihat daftar semua sertifikat yang pernah diterbitkan. + +### Klik Ikon Mata +Gunakan kolom pencarian untuk menemukan domain Anda. Klik tombol **"View Details"** (ikon mata 👁️) di sisi kanan baris sertifikat. + +### Tinjau Tab Informasi +Anda akan melihat detail seperti: +- **Serial Number**: ID unik sertifikat Anda. +- **Validity period**: Tanggal mulai dan berakhir. +- **Issuer**: CA mana yang menandatangani (TrustLab Intermediate). +- **Public Key Info**: Algoritma yang digunakan (RSA 2048/4096). + + +--- + +## Audit Metadata + +Penting untuk memeriksa detail berikut secara berkala: + +- **Thumbprint (SHA-1/SHA-256)**: Gunakan fingerprint ini untuk memverifikasi apakah sertifikat yang terpasang di server benar-benar yang Anda terbitkan dari TrustLab. +- **Subject Alternative Names (SAN)**: Pastikan semua alias domain yang dibutuhkan sudah terdaftar di sini. +- **Status**: Pastikan statusnya **Valid** (hijau). Jika warnanya merah, berarti sertifikat telah kadaluarsa atau dicabut. + +--- + +## Keamanan Data Detail + +Meskipun detail sertifikat (Public) aman untuk dilihat, tim TrustLab menyarankan untuk membatasi akses ke dashboard hanya untuk admin sistem yang berkepentingan untuk mencegah kebocoran informasi topologi jaringan. + +> [!TIP] +> Anda bisa menyalin (copy) Serial Number secara cepat melalui tombol clipboard di samping teks untuk keperluan dokumentasi internal atau konfigurasi firewall. diff --git a/pages/id/guide/concepts/_meta.json b/pages/id/guide/concepts/_meta.json new file mode 100644 index 0000000..f75aa11 --- /dev/null +++ b/pages/id/guide/concepts/_meta.json @@ -0,0 +1,4 @@ +{ + "pki-fundamentals": "Dasar-Dasar PKI", + "trust-architecture": "Arsitektur Kepercayaan" +} \ No newline at end of file diff --git a/pages/id/guide/concepts/pki-fundamentals.mdx b/pages/id/guide/concepts/pki-fundamentals.mdx new file mode 100644 index 0000000..1ee088f --- /dev/null +++ b/pages/id/guide/concepts/pki-fundamentals.mdx @@ -0,0 +1,58 @@ +import { Steps } from 'nextra/components' +import { Shield, Key, Lock, Globe } from 'lucide-react' + +# Dasar-Dasar PKI + +Memahami cara kerja **Public Key Infrastructure (PKI)** sangat penting untuk mengelola keamanan jaringan internal Anda. TrustLab menyederhanakan konsep kompleks ini menjadi alur kerja yang mudah dikelola. + +## Apa itu PKI? + +PKI adalah kerangka kerja yang terdiri dari peran, kebijakan, perangkat lunak, dan perangkat keras yang digunakan untuk membuat, mengelola, mendistribusikan, menggunakan, menyimpan, dan mencabut sertifikat digital. + +--- + +## Komponen Utama TrustLab + +TrustLab mengelola tiga pilar utama keamanan untuk Anda: + +### 1. Root Certificate Authority (CA) +Akar dari kepercayaan di seluruh jaringan Anda. Root CA digunakan untuk menandatangani sertifikat lain di bawahnya. Jika perangkat mempercayai Root CA ini, mereka akan mempercayai semua sertifikat yang diterbitkannya. + +### 2. Intermediate CA +Digunakan oleh TrustLab untuk operasional sehari-hari. Kami tidak menggunakan Root CA langsung untuk menandatangani sertifikat pengguna akhir (end-entity) demi alasan keamanan (isolasi). + +### 3. Sertifikat Pengguna Akhir +Sertifikat SSL/TLS yang Anda pasang di server web, perangkat IoT, atau klien email. Inilah yang sebenarnya "mengamankan" koneksi Anda. + +--- + +## Cara Kerja Kepercayaan (Trust) + +Bagaimana browser Anda tahu bahwa sebuah situs web itu aman? + + +### Instalasi Akar +Administrator menginstal Root CA TrustLab ke sistem trust store Anda. + +### Pengenalan Sertifikat +Saat Anda mengakses situs internal, server menyajikan sertifikatnya. + +### Verifikasi Rantai +Browser memeriksa: "Apakah sertifikat ini ditandatangani oleh pemegang yang saya percayai (Root CA)?" + +### Koneksi Aman +Jika rantai valid, gembok hijau muncul dan enkripsi data dimulai. + + +--- + +## Mengapa PKI Privat? + +Mungkin Anda bertanya, kenapa tidak menggunakan CA publik seperti Let's Encrypt? + +1. **Domain Non-Publik**: CA publik tidak bisa mengeluarkan sertifikat untuk `.local` atau `.internal`. +2. **Kontrol Penuh**: Anda menentukan masa berlaku, algoritma enkripsi, dan siapa yang berhak mendapatkan sertifikat. +3. **Tanpa Validasi DNS**: Karena ini internal, Anda tidak perlu membuktikan kepemilikan domain ke pihak luar. + +> [!IMPORTANT] +> Keamanan PKI privat Anda bergantung sepenuhnya pada **kerahasiaan Private Key Root CA**. TrustLab menyimpan key ini dengan enkripsi kuat untuk memastikan integritas jaringan Anda. diff --git a/pages/id/guide/concepts/trust-architecture.mdx b/pages/id/guide/concepts/trust-architecture.mdx new file mode 100644 index 0000000..213e8ab --- /dev/null +++ b/pages/id/guide/concepts/trust-architecture.mdx @@ -0,0 +1,50 @@ +import { Steps } from 'nextra/components' +import { Shield, Lock, Server, Users } from 'lucide-react' + +# Arsitektur Kepercayaan + +Arsitektur TrustLab dibangun di atas prinsip isolasi dan keamanan berlapis. Kami menggunakan struktur otoritas bertingkat untuk memastikan integritas jaringan Anda tetap terjaga. + +## Hirarki Otoritas Sertifikat + +Untuk keamanan maksimal, TrustLab tidak menggunakan satu kunci untuk semua hal. Kami menggunakan hirarki berikut: + +### 1. Root CA (Offline Root) +Ini adalah "Ayah" dari segala kepercayaan. Key ini sangat sensitif dan idealnya jarang digunakan. Dalam infrastruktur yang sangat ketat, Root CA biasanya tetap offline. + +### 2. Intermediate CA (Issuing CA) +TrustLab secara otomatis membuat Intermediate CA yang menandatangani sertifikat pengguna Anda. Jika Intermediate CA disusupi, Root CA dapat mencabutnya tanpa merusak seluruh ekosistem keamanan Anda. + +### 3. End-Entity Certificates +Aplikasi atau server Anda menggunakan sertifikat ini. Mereka memiliki masa berlaku yang lebih pendek (biasanya 1 tahun atau kurang) untuk meminimalkan risiko. + +--- + +## Alur Penerbitan Sertifikat + +Bagaimana data Anda berpindah dari dashboard hingga menjadi sertifikat sah? + + +### Permintaan Klien (CSR) +Dashboard membuat sepasang kunci (Public & Private). Public key dikirim dalam format Certificate Signing Request (CSR). + +### Validasi Internal +Dashboard TrustLab memverifikasi identitas Anda dan hak akses Anda terhadap domain yang diminta. + +### Penandatanganan CA +Intermediate CA menandatangani CSR tersebut menggunakan Private Key CA-nya sendiri. + +### Pengiriman Sertifikat +Sertifikat hasil tanda tangan dikembalikan ke Dashboard untuk Anda unduh. + + +--- + +## Keamanan Kunci (Key Security) + +- **Enkripsi saat Istirahat (Encryption at Rest)**: Semua Private Key disimpan dalam database menggunakan enkripsi tingkat tinggi (AES-256). +- **Isolasi Database**: Hanya layanan CA internal yang memiliki akses ke modul yang mendekripsi key tersebut. +- **Audit Logs**: Setiap aksi penandatanganan dicatat dalam log sistem yang tidak dapat diubah (immutable logs). + +> [!TIP] +> Jangan pernah membagikan file Private Key (`.key`) Anda kepada siapapun. Siapapun yang memiliki key tersebut bisa menyamar sebagai server Anda. diff --git a/pages/id/guide/getting-started/_meta.json b/pages/id/guide/getting-started/_meta.json new file mode 100644 index 0000000..80dd6d6 --- /dev/null +++ b/pages/id/guide/getting-started/_meta.json @@ -0,0 +1,4 @@ +{ + "install-root-ca": "Instal Root CA", + "access-dashboard": "Akses Dashboard" +} \ No newline at end of file diff --git a/pages/id/guide/getting-started/access-dashboard.mdx b/pages/id/guide/getting-started/access-dashboard.mdx new file mode 100644 index 0000000..24c4f45 --- /dev/null +++ b/pages/id/guide/getting-started/access-dashboard.mdx @@ -0,0 +1,96 @@ +import { Callout, Steps, Cards, Card } from 'nextra/components' +import { Monitor, Smartphone, LayoutDashboard, Key, Shield, Info, Clock, AlertTriangle } from 'lucide-react' + +# Mengakses Dashboard + +**TrustLab Dashboard** adalah pusat kendali utama Anda untuk mengelola sertifikat. Di sini Anda dapat meminta sertifikat baru, mengunduh kunci, dan mengelola sertifikat yang sudah ada. + +![Antarmuka Login TrustLab](/images/guide/login-screen.png) + +## Metode Autentikasi + +Kami mengutamakan keamanan dengan menawarkan opsi autentikasi modern tanpa kata sandi (passwordless). + + + } title="SSO (Google / GitHub)" href="#1-single-sign-on-sso" arrow /> + } title="Magic Link (Email)" href="#2-magic-link" arrow /> + + +### 1. Single Sign-On (SSO) +Cara tercepat untuk masuk. Klik **Continue with Google** atau **Continue with GitHub**. + +}> +**Perilaku SSO:** +* **Pengguna Lama:** Anda hanya dapat Masuk via SSO jika alamat email Anda sudah terdaftar. +* **Pengguna Baru:** Anda dapat **Mendaftar** akun baru secara instan dengan mengklik tombol Social Login pada halaman *Sign In* atau *Sign Up*. + + +### 2. Magic Link +Masuk yang aman dan tanpa kata sandi melalui email. + + +### Masukkan Email +Masukkan alamat email terdaftar Anda pada formulir login dan klik **"Continue with Email"**. + +### Cek Kotak Masuk +Anda akan menerima email berisi tautan login unik yang sensitif terhadap waktu. + +### Klik untuk Verifikasi +Klik tombol **"Sign in to TrustLab"** di dalam email tersebut. Anda akan langsung masuk ke dashboard secara instan. + + +}> + **Kedaluwarsa:** Tautan Magic Link hanya berlaku selama **15 menit**. Jika kedaluwarsa, cukup minta tautan baru dengan memasukkan email Anda kembali. + + +## Ikhtisar Dashboard + +Setelah berhasil masuk, Anda akan mendarat di dashboard utama. + +![Ikhtisar Dashboard TrustLab](/images/guide/dashboard-screen.png) + +Hub pusat ini memungkinkan Anda untuk mengakses: +* **Active Certificates**: Lihat semua sertifikat valid yang diterbitkan untuk Anda. +* **Request Certificate**: Wizard untuk menghasilkan Private Key dan CSR baru. +* **Revocation**: Antarmuka untuk menandai sertifikat yang hilang atau bocor sebagai tidak valid. + +## Registrasi + +Pengguna baru dapat membuat akun untuk mulai mengelola sertifikat. + +![Antarmuka Registrasi TrustLab](/images/guide/register-screen.png) + + +### Opsi A: Registrasi Sosial (Instan) +1. Klik **Continue with Google** atau **Continue with GitHub**. +2. **Atur Kata Sandi:** Pertama, pastikan Anda telah [**Menginstal Root CA**](/id/guide/getting-started/install-root-ca) di perangkat Anda. + +![Layar Atur Kata Sandi](/images/guide/set-password-after-social-screen.png) + +### Opsi B: Registrasi Email +1. Klik **"Sign up"** atau isi formulir. +2. Berikan detail dan kata sandi Anda. +3. **Verifikasi Email:** Klik tautan yang dikirim ke kotak masuk Anda untuk mengaktifkan. + + +## Pemulihan Kata Sandi + +Jika Anda kehilangan akses ke akun, Anda dapat mengatur ulang kata sandi dengan aman. + +![Antarmuka Lupa Kata Sandi TrustLab](/images/guide/forgot-password-screen.png) + +1. Klik **"Forgot password?"** pada layar login. +2. Masukkan alamat email terdaftar Anda. +3. Cek kotak masuk Anda untuk tautan pengaturan ulang kata sandi. +4. Buat kata sandi baru dan masuk. + +## Pemecahan Masalah + +### Saya tidak menerima Magic Link +* **Cek Spam/Junk**: Seringkali masuk ke sana untuk domain perusahaan. +* **Tunggu 1-2 Menit**: Pengiriman email terkadang tertunda. +* **Whitelist Pengirim**: Tambahkan `@trustlab.dyzulk.com` ke daftar **Safe Senders** penyedia email Anda agar tidak diblokir. + +### Akses Ditolak / Pengguna Tidak Ditemukan +* **Salah Ketik**: Periksa kembali alamat email Anda. +* **Belum Terdaftar**: Jika Anda belum membuat akun, silakan **Daftar** terlebih dahulu. Anda tidak dapat masuk via SSO jika email Anda belum ada di sistem kami (kecuali Anda menggunakan alur Pendaftaran). diff --git a/pages/id/guide/getting-started/install-root-ca.mdx b/pages/id/guide/getting-started/install-root-ca.mdx new file mode 100644 index 0000000..baac0ad --- /dev/null +++ b/pages/id/guide/getting-started/install-root-ca.mdx @@ -0,0 +1,64 @@ +import { Tabs, Steps, Cards, Card, Callout } from 'nextra/components' +import { Monitor, Smartphone, AlertTriangle, Info } from 'lucide-react' + +# Menginstal Root CA + +Untuk memastikan browser Anda mempercayai sertifikat yang diterbitkan oleh TrustLab, Anda harus menginstal Root CA kami. + +## Instalasi Cepat (Bundle) + +Instal secara instan **SEMUA** sertifikat Root & Intermediate TrustLab menggunakan skrip bundle otomatis kami. + +### Linux / Server (CLI) + +Pilih distribusi Anda untuk mendapatkan perintah instalasi yang dioptimalkan: + + + + ```bash + sudo apt update && sudo apt install -y curl && curl -sL https://cdn.trustlab.dyzulk.com/ca/bundles/trustlab-all.sh | sudo bash + ``` + + + ```bash + (sudo yum install -y curl || sudo dnf install -y curl) && curl -sL https://cdn.trustlab.dyzulk.com/ca/bundles/trustlab-all.sh | sudo bash + ``` + + + ```bash + sudo pacman -Sy --noconfirm curl && curl -sL https://cdn.trustlab.dyzulk.com/ca/bundles/trustlab-all.sh | sudo bash + ``` + + + ```bash + curl -sL https://cdn.trustlab.dyzulk.com/ca/bundles/trustlab-all.sh | sudo bash + ``` + + + +### Ekosistem Windows & Apple + + + } title="Windows Bundle Installer (.bat)" href="https://cdn.trustlab.dyzulk.com/ca/bundles/trustlab-all.bat" arrow /> + } title="macOS / iOS Profile (.mobileconfig)" href="https://cdn.trustlab.dyzulk.com/ca/bundles/trustlab-all.mobileconfig" arrow /> + + + +}> + **Pengguna Windows:** Anda **WAJIB** klik kanan file `.bat` dan pilih **"Run as Administrator"**. Mengklik dua kali secara langsung kemungkinan besar akan gagal karena batasan izin. + + + +}> + **Pengguna Apple:** Setelah mengunduh profil, buka **System Settings > Privacy & Security > Profiles** untuk menginstalnya. Untuk iOS, lihat bagian *Instalasi Sertifikat Individu* di bawah untuk langkah-langkah kepercayaan mendetail. + + +--- + +import { DynamicInstallationGuide } from '../../../../components/DynamicInstallationGuide' + +## Instalasi Sertifikat Individu + +Jika Anda perlu menginstal sertifikat tertentu secara individu (misal: hanya Root, atau Intermediate tertentu), gunakan panduan langsung di bawah ini. + + diff --git a/pages/id/guide/index.mdx b/pages/id/guide/index.mdx new file mode 100644 index 0000000..51dd9d9 --- /dev/null +++ b/pages/id/guide/index.mdx @@ -0,0 +1,23 @@ +# Panduan Pengguna TrustLab + +Selamat datang di dokumentasi resmi TrustLab. Panduan ini dirancang untuk membantu Anda memahami, menginstal, dan mengelola Otoritas Sertifikat (CA) privat Anda sendiri. + +## Apa itu TrustLab? + +TrustLab adalah solusi manajemen PKI (Public Key Infrastructure) yang disederhanakan untuk jaringan internal. Kami memungkinkan Anda untuk: + +- **Mengeluarkan Sertifikat SSL/TLS** untuk domain internal seperti `.local`, `.corp`, atau alamat IP privat. +- **Mengamankan Komunikasi IoT** dan perangkat dalam jaringan lokal. +- **Enkripsi Email (S/MIME)** untuk kerahasiaan data karyawan. +- **Otomasi Integrasi** dengan web server modern seperti Nginx dan IIS. + +## Langkah Cepat + +1. **Instal Root CA**: Langkah pertama yang wajib dilakukan agar semua sertifikat Anda dipercaya oleh perangkat. [Baca selengkapnya](/id/guide/getting-started/install-root-ca) +2. **Akses Dashboard**: Masuk ke portal manajemen Anda untuk mulai menerbitkan sertifikat. [Baca selengkapnya](/id/guide/getting-started/access-dashboard) +3. **Terbitkan Sertifikat**: Pelajari cara membuat permintaan sertifikat baru dalam hitungan detik. [Baca selengkapnya](/id/guide/certificates/request-new) + +--- + +> [!TIP] +> Mulailah dari bagian **Mulai Cepat** untuk mendapatkan Certificate Authority yang berfungsi penuh dalam waktu kurang dari 5 menit. diff --git a/pages/id/guide/integrations/_meta.json b/pages/id/guide/integrations/_meta.json new file mode 100644 index 0000000..6d3ef99 --- /dev/null +++ b/pages/id/guide/integrations/_meta.json @@ -0,0 +1,4 @@ +{ + "web-servers": "Konfigurasi Web Server", + "smime": "Keamanan Email S/MIME" +} \ No newline at end of file diff --git a/pages/id/guide/integrations/smime.mdx b/pages/id/guide/integrations/smime.mdx new file mode 100644 index 0000000..6b3a73d --- /dev/null +++ b/pages/id/guide/integrations/smime.mdx @@ -0,0 +1,77 @@ +import { Steps, Callout, Tabs } from 'nextra/components' +import { Mail, BadgeAlert, ShieldCheck } from 'lucide-react' + +# Keamanan Email S/MIME + +Secure/Multipurpose Internet Mail Extensions (S/MIME) memungkinkan Anda untuk **menandatangani** (membuktikan identitas) dan **mengenkripsi** (melindungi konten) pesan email. + +}> + **Hanya untuk Penggunaan Internal:** + Sertifikat TrustLab bersifat pribadi. Jika Anda mengirim email bertanda tangan ke **Penerima Eksternal** (misal: Gmail, Yahoo), mereka akan melihat peringatan "Tanda Tangan Tidak Dipercaya/Tidak Valid" karena mereka tidak mempercayai Root CA TrustLab. + + **Gunakan ini hanya untuk komunikasi internal perusahaan.** + + +## Panduan Pengaturan + +## Konfigurasi Microsoft Outlook + + + + **Versi yang Didukung:** Outlook 365, 2019, 2016. + + + ### 1. Buka Trust Center + Buka **File > Options > Trust Center > Trust Center Settings**. + + ### 2. Email Security + Pilih **Email Security** dari sidebar kiri. + + ### 3. Impor Sertifikat + Di bawah *Encrypted Email*, klik **Settings...** + * **Signing Certificate**: Klik 'Choose' dan pilih sertifikat TrustLab Anda. + * **Encryption Certificate**: Sama seperti di atas. + + ### 4. Simpan + Klik **OK** untuk menerapkan. + + + + **Versi yang Didukung:** Outlook baru untuk Windows, OWA. + *Catatan: Memerlukan ekstensi S/MIME Control.* + + + ### 1. Buka Pengaturan + Klik **Ikon Roda Gigi** (Settings) di pojok kanan atas. + + ### 2. Menu S/MIME + Navigasi ke **Mail > S/MIME**. + + ### 3. Aktifkan + Aktifkan **"Encrypt with S/MIME"** dan pilih sertifikat Anda. + + + + +## Konfigurasi Thunderbird + +**Persyaratan Versi:** v115+ (Supernova) atau yang lebih baru. + + +### 1. Pengaturan Akun +Klik tombol **Menu (≡)** dan pilih **Account Settings**. + +### 2. Enkripsi End-to-End +Pilih akun email Anda dari sidebar dan klik **End-to-End Encryption**. + +### 3. Impor Sertifikat +Di bagian **S/MIME**, klik **Add** (atau Manager) untuk mengimpor file `.p12` Anda. + +### 4. Terapkan Sertifikat +Di bawah *Select Certificate*, pilih file yang diimpor untuk keduanya: +* **Digital Signing** +* **Encryption** + + +## Cara Mengetes +Kirim email ke rekan kerja yang juga telah menginstal Root CA. Mereka seharusnya melihat ikon **Pita/Badge** terverifikasi yang menunjukkan bahwa email tersebut dipercaya dan tidak dimodifikasi. diff --git a/pages/id/guide/integrations/web-servers.mdx b/pages/id/guide/integrations/web-servers.mdx new file mode 100644 index 0000000..2f602ea --- /dev/null +++ b/pages/id/guide/integrations/web-servers.mdx @@ -0,0 +1,78 @@ +import { Tabs, Callout } from 'nextra/components' +import { Server, Globe, Shield } from 'lucide-react' + +# Konfigurasi Web Server + +Untuk mengaktifkan HTTPS pada layanan internal Anda, Anda perlu mengonfigurasi web server agar menggunakan sertifikat yang diterbitkan oleh TrustLab. + +}> + **Prasyarat:** Pastikan Anda telah mengunduh **PEM Bundle** (untuk Linux) atau **PFX** (untuk Windows) seperti yang dijelaskan dalam [Panduan Unduh](/id/guide/certificates/download-install). + + +## Contoh Konfigurasi + +Pilih lingkungan web server Anda di bawah ini: + + + + ### Pengaturan Nginx + File Target: `/etc/nginx/sites-available/default` atau `internal.app.conf` + + ```nginx + server { + listen 80; + server_name internal.app; + return 301 https://$host$request_uri; + } + + server { + listen 443 ssl http2; + server_name internal.app; + + # SSL Configuration + ssl_certificate /etc/ssl/trustlab/internal.app.crt; + ssl_certificate_key /etc/ssl/trustlab/internal.app.key; + + # Recommended Security + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + } + ``` + + + ### Pengaturan Apache / HTTPD + File Target: `/etc/httpd/conf.d/ssl.conf` atau file VHost. + + ```apache + + ServerName internal.app + DocumentRoot /var/www/html/internal + + SSLEngine on + SSLCertificateFile "/path/to/internal.app.crt" + SSLCertificateKeyFile "/path/to/internal.app.key" + + # Best Practice + SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 + + ``` + 5. Pergi ke **Sites**, pilih situs Anda, dan klik **Bindings...**. + 6. Tambahkan binding `https` dan pilih sertifikat TrustLab yang baru diimpor. + + + +--- + +## Verifikasi Konfigurasi + +Gunakan perintah `curl` dari terminal untuk memastikan sertifikat terdeteksi dengan benar: + +```bash +curl -vI https://internal.yourcompany.local +``` + +Perhatikan baris `server certificate verification OK`. Jika muncul error, pastikan Anda telah menginstal Root CA di perangkat yang menjalankan perintah tersebut. + +> [!NOTE] +> Sangat disarankan untuk selalu menggunakan file **BUNDLE/COMBINED** (Sertifikat + Intermediate) untuk menghindari masalah rantai sertifikat (Chain Error) di beberapa browser mobile. diff --git a/pages/id/guide/troubleshooting/_meta.json b/pages/id/guide/troubleshooting/_meta.json new file mode 100644 index 0000000..4d35789 --- /dev/null +++ b/pages/id/guide/troubleshooting/_meta.json @@ -0,0 +1,4 @@ +{ + "browser-errors": "Kesalahan Umum Browser", + "developer-tools": "Masalah CLI & Bahasa" +} \ No newline at end of file diff --git a/pages/id/guide/troubleshooting/browser-errors.mdx b/pages/id/guide/troubleshooting/browser-errors.mdx new file mode 100644 index 0000000..73e813a --- /dev/null +++ b/pages/id/guide/troubleshooting/browser-errors.mdx @@ -0,0 +1,43 @@ +import { Callout, Cards, Card } from 'nextra/components' +import { AlertTriangle, Globe, Calendar, XCircle, HelpCircle } from 'lucide-react' + +# Kesalahan Browser Umum + +Saat menggunakan sertifikat internal, browser sangatlah ketat. Berikut adalah kode kesalahan yang paling umum dan cara mengatasinya. + +### `NET::ERR_CERT_AUTHORITY_INVALID` + +}> + **Logikanya:** Browser sama sekali **tidak mengenal** "TrustLab Root CA" yang menandatangani sertifikat situs web Anda, sehingga ia menganggapnya palsu. + + +**Solusi:** +Anda belum menginstal Root CA di perangkat Anda. +* [**Panduan Instalasi Root CA**](/id/guide/getting-started/install-root-ca) + +--- + +### `NET::ERR_CERT_COMMON_NAME_INVALID` + +}> + **Logikanya:** Anda mengunjungi `app.local`, tetapi sertifikat hanya diterbitkan untuk `api.local`. Namanya **tidak cocok**. + + +**Solusi:** +Domain tersebut tidak ada dalam **SANs (Subject Alternative Names)** sertifikat. +1. Klik ikon **"Not Secure"** > **Certificate**. +2. Periksa bidang **DNS Name** atau SAN. +3. Jika tidak ada, Anda harus **[Menerbitkan Sertifikat Baru](/id/guide/certificates/request-new)** yang menyertakan domain yang benar. + +--- + +### `NET::ERR_CERT_DATE_INVALID` + +}> + **Logikanya:** Sertifikat telah kedaluwarsa, ATAU jam komputer Anda diatur ke tanggal yang salah (lampau/masa depan). + + +**Solusi:** +1. Periksa jam sistem Anda terlebih dahulu. +2. Jika jam sudah benar, berarti sertifikat benar-benar kedaluwarsa. +3. **[Perbarui Sertifikat](/id/guide/certificates/renewal)** segera. diff --git a/pages/id/guide/troubleshooting/developer-tools.mdx b/pages/id/guide/troubleshooting/developer-tools.mdx new file mode 100644 index 0000000..c190843 --- /dev/null +++ b/pages/id/guide/troubleshooting/developer-tools.mdx @@ -0,0 +1,97 @@ +import { Callout, Steps } from 'nextra/components' +import { Terminal, Code, Server, Download } from 'lucide-react' + +# Masalah CLI & Bahasa Pemrograman + +Bahkan jika Anda sudah menginstal Root CA di sistem operasi Anda, banyak alat pengembang dan bahasa pemrograman yang **mengabaikan penyimpanan sistem (system store)** dan menggunakan penyimpanan mereka sendiri. + +}> + **Prasyarat:** + Anda harus memiliki file **`trustlab-root.crt`** yang sudah diunduh di mesin Anda. + [Unduh di sini](/id/guide/getting-started/install-root-ca). + + +Jika kode atau skrip Anda gagal dengan kesalahan sertifikat, periksa solusi di bawah ini. + +## 1. cURL & Wget + +Alat baris perintah standar sering kali mencari file bundle tertentu. + +### cURL +}> + `curl: (60) SSL certificate problem: unable to get local issuer certificate` + + +**Solusi:** +Teruskan Root CA secara eksplisit: +```bash +curl --cacert /jalur/ke/trustlab-root.crt https://domain-anda.local +``` + +### Wget +**Solusi:** +```bash +wget --ca-certificate=/jalur/ke/trustlab-root.crt https://domain-anda.local +``` + +--- + +## 2. Node.js / JavaScript + +Node.js tidak menggunakan Root CA Sistem secara default. + +}> + `Error: self signed certificate in certificate chain` + + +**Solusi (Variabel Lingkungan):** +Atur variabel ini sebelum menjalankan aplikasi Anda. Ini berfungsi untuk sebagian besar aplikasi Node.js (npm, yarn, skrip kustom). + +```bash +export NODE_EXTRA_CA_CERTS="/jalur/ke/trustlab-root.crt" +node server.js +``` + +--- + +## 3. Python (Requests/Pip) + +Pustaka `requests` di Python (dan `pip`) menggunakan paket sertifikatnya sendiri (`certifi`), mengabaikan penyimpanan sistem Windows/macOS/Linux. + +}> + `SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed'))` + + +**Solusi:** +Arahkan ke Root CA Anda menggunakan variabel lingkungan. + +```bash +export REQUESTS_CA_BUNDLE="/jalur/ke/trustlab-root.crt" +python script.py +``` + +--- + +## 4. Aplikasi Java + +Java menggunakan "Keystore" (JKS) milik sendiri dan biasanya **mengabaikan** Windows Certificate Store. + +}> + `sun.security.validator.ValidatorException: PKIX path building failed` + + +**Solusi:** +Anda harus mengimpor Root CA TrustLab ke dalam Java Keystore (cacerts). + + +### Lokasi standar cacerts +Biasanya di `$JAVA_HOME/lib/security/cacerts`. + +### Impor dengan keytool +```bash +keytool -import -trustcacerts -alias trustlab-root \ + -file trustlab-root.crt \ + -keystore "$JAVA_HOME/lib/security/cacerts" +``` +*Kata sandi default biasanya adalah `changeit`.* + diff --git a/pages/id/index.mdx b/pages/id/index.mdx new file mode 100644 index 0000000..1aff258 --- /dev/null +++ b/pages/id/index.mdx @@ -0,0 +1,3 @@ +import { LandingPage } from '../../components/LandingPage' + + diff --git a/pages/index.mdx b/pages/index.mdx deleted file mode 100644 index ce1d4b4..0000000 --- a/pages/index.mdx +++ /dev/null @@ -1,3 +0,0 @@ -import { LandingPage } from '../components/LandingPage' - - diff --git a/theme.config.tsx b/theme.config.tsx index 0bb5540..933068b 100644 --- a/theme.config.tsx +++ b/theme.config.tsx @@ -11,6 +11,10 @@ const config: DocsThemeConfig = { ), logoLink: '/', + i18n: [ + { locale: 'en', text: 'English' }, + { locale: 'id', text: 'Bahasa Indonesia' } + ], project: { link: 'https://github.com/dyzulk/trustlab-docs', }, @@ -25,7 +29,7 @@ const config: DocsThemeConfig = { docsRepositoryBase: 'https://github.com/dyzulk/trustlab-docs/tree/main', useNextSeoProps() { const { asPath } = useRouter() - if (asPath === '/') { + if (asPath.includes('/index') || asPath.endsWith('/en/') || asPath.endsWith('/id/')) { return { titleTemplate: 'TrustLab - Private Certificate Authority' }