Sertifikat sesuai aplikasinya
- Sertifikat
- A
- API key
- A
- Binding A
- Enforce
Diterima
Ini yang dituju: setiap aplikasi memakai sertifikatnya sendiri.
Panduan
Langkah demi langkah, dari download sampai CS-Agent berjalan di server Anda. Ikuti urutannya, salin perintahnya, dan cocokkan hasilnya dengan contoh.
CS-Agent adalah program yang Anda pasang di server tempat aplikasi berjalan. Aplikasi meminta CS-Agent untuk mengenkripsi, mendekripsi, atau menandatangani data, sehingga aplikasi Anda tidak perlu menyimpan cryptographic key sendiri.
Pemasangan pertama terdiri dari empat pekerjaan, masing-masing cukup sekali:
Buka halaman Download Belum masuk? Anda akan diarahkan ke halaman masuk dulu.
Download CS-Agent hanya dari portal ini. Jangan memakai salinan yang dikirim lewat email, chat, atau situs lain.
Pastikan file yang Anda download utuh dan asli sebelum dijalankan.
PowerShell, di folder tempat file di-download
Get-FileHash .\cs-agent-windows-amd64-v8.1.1.exe -Algorithm SHA256
Bandingkan nilai Hash yang muncul dengan nilai SHA-256 di halaman Download. Huruf besar/kecil tidak berpengaruh, selebihnya harus sama persis.
Terminal, di folder tempat file di-download
sha256sum -c cs-agent-linux-*-v8.1.1.sha256
Hasil yang benar: cs-agent-linux-amd64-v8.1.1: OK (atau arm64 untuk server ARM64).
Disarankan: verifikasi tanda tangan rilis
Unduh juga daftar checksum, kedua file tanda tangannya, dan kunci publik dari halaman Download, lalu:
sha256sum -c cs-agent-v8.1.1.sha256sums --ignore-missing
openssl pkeyutl -verify -pubin -inkey tile-release-ed25519.pub.pem -rawin -in cs-agent-v8.1.1.sha256sums -sigfile cs-agent-v8.1.1.sha256sums.ed25519.sig
Hasil yang benar: Signature Verified Successfully. Dengan OpenSSL 3.5 ke atas Anda juga dapat memakai tanda tangan pasca-kuantum (tile-release-mldsa65.pub.pem dan file .mldsa65.sig).
Fingerprint SHA-256 kunci publik penandatangan rilis — cocokkan dengan yang Anda terima dari TILE:
Semua file CS-Agent tinggal dalam satu folder yang sama, dan perintah selalu dijalankan dari folder itu.
Unblock-File .\cs-agent.exe
.\cs-agent.exe --version
sudo mkdir -p /opt/cs-agent
sudo chown "$USER": /opt/cs-agent
mv cs-agent-linux-*-v8.1.1 /opt/cs-agent/cs-agent
mv ca-onboarding.crt /opt/cs-agent/
cd /opt/cs-agent
chmod +x cs-agent
./cs-agent --version
Jika nomor versi muncul (misalnya v8.1.1), program siap dipakai. Tambahkan --help pada perintah apa pun untuk melihat penjelasannya.
Langkah ini menghubungkan server dengan akun TILE Anda. Ganti <ALAMAT-ONBOARDING> dengan alamat dari halaman Mulai di portal.
.\cs-agent.exe login --cluster <ALAMAT-ONBOARDING> --ca-cert .\ca-onboarding.crt
./cs-agent login --cluster <ALAMAT-ONBOARDING> --ca-cert ./ca-onboarding.crt
CS-Agent hanya melayani aplikasi yang membawa sertifikat yang sah. Buat tiga jenis, berurutan:
| Perintah | Menghasilkan | Untuk |
|---|---|---|
| cert ca | ca.crt, ca.key | Penerbit sertifikat milik Anda sendiri |
| cert server | server.crt, server.key | CS-Agent di server ini |
| cert client | <nama>.crt, <nama>.key | Setiap aplikasi yang memakai CS-Agent |
a. Penerbit. Pakai bawaan bila aplikasi Anda dibuat dengan Go 1.27+ atau memakai OpenSSL 3.5+. Untuk .NET, Java, atau bila ragu, pakai pilihan kompatibel.
.\cs-agent.exe cert ca # bawaan
.\cs-agent.exe cert ca --alg ecdsa-p384 # kompatibel
./cs-agent cert ca # bawaan
./cs-agent cert ca --alg ecdsa-p384 # kompatibel
b. Server. Jika aplikasi berjalan di server yang sama, cukup perintah pertama. Jika aplikasi menghubungi CS-Agent dari komputer lain, sebutkan alamat IP server ini (contoh 192.168.1.50).
.\cs-agent.exe cert server
.\cs-agent.exe cert server --dns localhost --ip 127.0.0.1 --ip 192.168.1.50
./cs-agent cert server
./cs-agent cert server --dns localhost --ip 127.0.0.1 --ip 192.168.1.50
c. Aplikasi. Satu sertifikat per aplikasi, supaya akses satu aplikasi bisa dicabut tanpa mengganggu yang lain. Sertakan --app berisi Application ID aplikasi itu (dari menu Aplikasi di portal), agar sertifikat siap dipakai bila client binding diaktifkan (langkah 11).
.\cs-agent.exe cert client --name app-1 --cn app-1 --app <APPLICATION-ID>
./cs-agent cert client --name app-1 --cn app-1 --app <APPLICATION-ID>
--app diisi Application ID, bukan Client ID atau fingerprint agent. Nilainya ditulis ke sertifikat sebagai urn:tile:app:<APPLICATION-ID>.
File .key bersifat rahasia, terutama ca.key. Jangan kirim lewat email atau chat. Jangan memakai --force pada cert ca: semua sertifikat lama akan ditolak.
Salin seluruh perintah sekaligus. Perintah ini membuat file .env di folder CS-Agent.
@"
PORT_SERVICE_CS=8112
PORT_SERVICE_GRPC=8113
CA_CERT_PATH=./ca.crt
SERVER_CERT_PATH=./server.crt
SERVER_KEY_PATH=./server.key
"@ | Set-Content -Encoding ascii .env
cat > .env <<'EOF'
PORT_SERVICE_CS=8112
PORT_SERVICE_GRPC=8113
CA_CERT_PATH=./ca.crt
SERVER_CERT_PATH=./server.crt
SERVER_KEY_PATH=./server.key
EOF
8112 adalah port untuk aplikasi HTTPS, 8113 untuk aplikasi gRPC (hapus barisnya bila tidak dipakai). Jika port sudah dipakai program lain, ganti dengan angka lain antara 1024 dan 65535.
.env hanya boleh berisi lima baris ini. CS-Agent menolak menyala bila ada baris lain, atau bila environment service menyetel GODEBUG, SSL_CERT_FILE/SSL_CERT_DIR, variabel proxy (HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, NO_PROXY), atau GRPC_*: pengaturan lain datang dari cluster. Baris LOG_RETENTION_DAYS dari panduan lama diabaikan (dengan peringatan); hapus saja.
.\cs-agent.exe serve
./cs-agent serve
Penyalaan pertama butuh beberapa detik. CS-Agent siap melayani ketika muncul tulisan OPERATIONAL.
Jalankan CS-Agent dengan akun khusus tanpa hak administrator, dan batasi file rahasianya agar hanya akun itu yang bisa membaca.
1. Buat akun khusus dan atur izin file
sudo useradd --system --no-create-home --shell /usr/sbin/nologin cs-agent
sudo chown -R cs-agent:cs-agent /opt/cs-agent
sudo chmod 0600 /opt/cs-agent/.zerotrust-tile/config.json /opt/cs-agent/*.key
sudo chmod 0644 /opt/cs-agent/*.crt
2. Buat file /etc/systemd/system/cs-agent.service
[Unit]
Description=TILE CS-Agent
After=network-online.target
Wants=network-online.target
[Service]
User=cs-agent
Group=cs-agent
WorkingDirectory=/opt/cs-agent
ExecStart=/opt/cs-agent/cs-agent serve
Restart=always
RestartSec=5
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
ReadWritePaths=/opt/cs-agent
[Install]
WantedBy=multi-user.target
3. Aktifkan dan periksa
sudo systemctl daemon-reload
sudo systemctl enable --now cs-agent
sudo systemctl status cs-agent
sudo journalctl -u cs-agent -f # catatan kegiatan, Ctrl+C untuk keluar
icacls "C:\cs-agent" /grant "svc-csagent:(OI)(CI)M"
icacls "C:\cs-agent\.zerotrust-tile\config.json" /inheritance:r /grant:r "svc-csagent:(R)"
icacls "C:\cs-agent\server.key" /inheritance:r /grant:r "svc-csagent:(R)"
$cred = Get-Credential "$env:COMPUTERNAME\svc-csagent"
$action = New-ScheduledTaskAction -Execute 'C:\cs-agent\cs-agent.exe' -Argument 'serve' -WorkingDirectory 'C:\cs-agent'
$trigger = New-ScheduledTaskTrigger -AtStartup
$settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit ([TimeSpan]::Zero) -RestartCount 999 -RestartInterval (New-TimeSpan -Minutes 1)
Register-ScheduledTask -TaskName 'TILE CS-Agent' -Action $action -Trigger $trigger -Settings $settings `
-User $cred.UserName -Password $cred.GetNetworkCredential().Password
Start-ScheduledTask -TaskName 'TILE CS-Agent'
Jika akun yang menjalankan CS-Agent diganti, lakukan login ulang dengan akun yang baru. Bila kebijakan domain membatasi tugas terjadwal, minta bantuan tim IT.
Bagian ini biasanya dikerjakan pembuat aplikasi. Serahkan kepada mereka lewat jalur aman:
Daftar endpoint REST dan gRPC lengkap dengan contoh kode (Go, PHP, Python, Node.js, .NET, Java, Ruby) ada di API Reference pada portal — buka API Reference (perlu masuk ke portal).
Aplikasi ditolak dengan pesan not allowed? Izinkan aplikasi itu untuk server ini di menu Agent pada portal, lalu jalankan ulang CS-Agent.
Tanpa pengaturan apa pun, CS-Agent sudah mewajibkan sertifikat aplikasi (langkah 6) dan API key aplikasi. Tiga pengaman berikut bisa Anda aktifkan sendiri di portal untuk mempersempit siapa yang boleh memakai CS-Agent. Setiap perubahan meminta kode TOTP dan sampai ke CS-Agent dalam sekitar 2 menit, tanpa restart.
Urutan pemeriksaan setiap permintaan aplikasi
Pemeriksaan berhenti di langkah pertama yang gagal, dan aplikasi menerima kode error langkah itu. Langkah 3 dan 4 hanya berjalan bila Anda mengaktifkannya.
Diatur per aplikasi: menu Aplikasi, lalu klik label binding aplikasi itu (off, audit, atau enforce). CS-Agent mencocokkan sertifikat yang dipakai dengan aplikasi pada API key. Aturan bawaan: sertifikat harus memuat urn:tile:app:<APPLICATION-ID>, yaitu hasil --app pada langkah 6c. Pemilik aplikasi yang sama tidak cukup: sertifikat aplikasi A tetap ditolak untuk aplikasi B walaupun keduanya milik Anda.
| Mode | Sertifikat tidak cocok | Kapan dipakai |
|---|---|---|
| Off | Diterima, sertifikat tidak diperiksa | Bawaan |
| Audit | Diterima, tercatat Akan ditolak (audit) di tabel Pemakaian agent | Masa uji, sebelum Enforce |
| Enforce | Ditolak dengan client_binding_failed | Setelah Pemakaian bersih dari catatan audit |
Halaman Client binding menampilkan Pratinjau pemakaian 24 jam sampai 90 hari terakhir: sertifikat mana yang akan diterima atau ditolak sebelum Anda menyimpan.
Opsi Source IP harus tercantum di IP SAN certificate mengikat sertifikat juga ke alamat host aplikasi. Tulis alamat itu dengan --ip saat membuat sertifikat (boleh diulang). Pakai hanya untuk host dengan IP tetap: bila IP berubah, sertifikat harus diterbitkan ulang.
.\cs-agent.exe cert client --name app-1 --cn app-1 --app <APPLICATION-ID> --ip 10.20.0.11
./cs-agent cert client --name app-1 --cn app-1 --app <APPLICATION-ID> --ip 10.20.0.11
Diatur per agent: menu Agent → detail agent → Network. Isi daftar alamat IP untuk setiap aplikasi. Jumlah IP per aplikasi dibatasi (bawaan 2); hubungi admin TILE bila perlu lebih.
Sertifikat bocor atau aplikasi berhenti dipakai? Cabut sertifikatnya; sertifikat aplikasi lain tidak terpengaruh.
.\cs-agent.exe cert revoke --name app-1
.\cs-agent.exe cert crl # perbarui CRL tanpa mencabut apa pun
./cs-agent cert revoke --name app-1
./cs-agent cert crl # perbarui CRL tanpa mencabut apa pun
.\cs-agent.exe cert status .\
./cs-agent cert status ./
Menampilkan masa berlaku dan algoritma CA, sertifikat server, dan semua sertifikat aplikasi. Exit code 0 berarti semua aman, 1 ada yang tinggal ≤ 30 hari, 2 ada yang ≤ 7 hari, sudah expired, atau tidak terbaca, sehingga bisa dipakai langsung di cron atau monitoring. Status yang sama tampil di menu Agent pada portal.
Dalam contoh ini Anda punya dua aplikasi, Aplikasi A dan Aplikasi B. Warna label menunjukkan sertifikat atau API key itu milik aplikasi mana.
Client binding
Diterima
Ini yang dituju: setiap aplikasi memakai sertifikatnya sendiri.
Ditolak · client_binding_failed
Benar ditolak, walaupun A dan B milik Anda sendiri. Solusi: buat sertifikat untuk B, cert client --name app-b --app <ID-B>.
Diterima
Dibuat dengan --app <ID-A> --app <ID-B>. Bila sertifikat ini dicabut, A dan B berhenti bersamaan.
Diterima, tercatat Akan ditolak
Lihat tabel Pemakaian di detail agent. Perbaiki semua yang tercatat, baru pindah ke Enforce.
Diterima, sertifikat tidak diperiksa
Berjalan, tetapi sertifikat aplikasi mana pun dari CA Anda bisa dipakai untuk B.
Ditolak · client_binding_failed
--app harus berisi Application ID dari menu Aplikasi, bukan Client ID atau fingerprint agent. Terbitkan ulang sertifikatnya.
Filter source IP
Diterima
Ditolak · source_ip_not_allowed
Tambahkan alamat itu di Network agent, bila memang aplikasi Anda.
Ditolak · source_ip_not_allowed
CS-Agent tidak melihat alamat aplikasi. Solusi: aktifkan PROXY protocol di load balancer dan di Network agent, lalu isi Load balancer yang dipercaya.
Ditolak · source_ip_not_allowed
Enforce berlaku untuk semua aplikasi di agent itu. Isi daftar setiap aplikasi, atau pakai Audit dulu.
Pencabutan
Ditolak · client_certificate_revoked
Aplikasi lain tidak terpengaruh. Terbitkan sertifikat baru untuk A.
Semua ditolak · client_certificate_status_unavailable
Jalankan cert crl sekarang, lalu jadwalkan setiap minggu.
Pertanyaan lain
| Situasi | Yang perlu dilakukan |
|---|---|
| Tidak yakin sertifikat dibuat untuk aplikasi mana | Panggil endpoint health dengan sertifikat dan API key itu. Bagian your_client_certificate.application_ids berisi Application ID yang tertulis di sertifikat (bisa lebih dari satu; kosong bila dibuat tanpa --app). Bandingkan dengan your_application.application_id. Bila binding aplikasi itu Enforce dan sertifikat tidak cocok, health juga ditolak dengan client_binding_failed; pakai mode Audit sementara untuk memeriksanya. |
| Binding sudah diubah ke Off, tetapi masih client_binding_failed | Tunggu sekitar 2 menit. Muat ulang halaman Client binding dan pastikan mode yang tersimpan memang Off (penyimpanan gagal bila kode TOTP ditolak). Di logs/info-<tanggal>.log CS-Agent, perubahan terlihat sebagai Client binding rules applied dengan jumlah aplikasi yang baru. Pastikan juga yang diubah adalah binding aplikasi pada API key yang dipakai. |
| Filter source IP Off, tetapi ditolak client_binding_failed | Filter source IP dan client binding adalah dua pengaman terpisah (langkah 3 dan 4 pada diagram di atas). Mematikan filter IP tidak mematikan client binding; periksa mode binding aplikasinya. |
| Alamat IP ditulis dengan --dns 192.168.1.20 | cert client menolaknya dan menyarankan --ip 192.168.1.20. Sertifikat lama yang memuat alamat IP sebagai nama DNS tidak lolos opsi IP SAN; terbitkan ulang dengan --ip. |
CS-Agent menulis log ke folder logs di folder CS-Agent, satu file per tanggal (WIB):
Lama penyimpanan log diatur operator cluster untuk semua agent (bawaan 30 hari, 7–3650), termasuk hari ini. Dengan 30, log hari pertama dihapus pada hari ke-31. Yang dihapus hanya file log CS-Agent di folder logs; file lain di folder itu tidak disentuh. Sebelum CS-Agent menerima pengaturan dari cluster, tidak ada log yang dihapus.
Setiap baris adalah satu objek JSON. Field yang selalu ada: @timestamp (WIB, milidetik), level, message, service; identitas agent: agent_name, agent_id, fingerprint_agent (sama dengan Agent ID dan Fingerprint di menu Agent), cs_version; dan bila ada: type, details, request_id, endpoint, status_code. Pakai fingerprint_agent untuk memfilter satu agent di Elasticsearch: nilainya tetap walau hostname atau container berganti. Baris dari detik-detik pertama penyalaan belum membawa identitas agent. Nama field tidak akan diubah antarversi, jadi mapping dan dashboard Elasticsearch Anda tetap berlaku setelah update.
Tambahkan input berikut di filebeat.yml:
filebeat.inputs:
- type: filestream
id: cs-agent
paths:
- 'C:\cs-agent\logs\*.log'
prospector.scanner.fingerprint.enabled: false
file_identity.native: ~
parsers:
- ndjson:
target: ""
overwrite_keys: true
add_error_key: true
filebeat.inputs:
- type: filestream
id: cs-agent
paths:
- /opt/cs-agent/logs/*.log
prospector.scanner.fingerprint.enabled: false
file_identity.native: ~
parsers:
- ndjson:
target: ""
overwrite_keys: true
add_error_key: true
Caranya sama dengan langkah 5. Sertifikat dan .env tidak perlu dibuat ulang.
Jika CS-Agent sudah berjalan sebagai layanan (langkah 9), matikan dulu layanannya lalu login sebagai akun layanan: sudo systemctl stop cs-agent && sudo -u cs-agent ./cs-agent login --cluster <ALAMAT-ONBOARDING> --ca-cert ./ca-onboarding.crt, kemudian sudo systemctl start cs-agent.
| Pesan yang muncul | Yang perlu dilakukan |
|---|---|
| is not recognized / command not found / No such file | Terminal tidak berada di folder CS-Agent, atau nama program belum diganti. Ulangi langkah 4. Awali perintah dengan .\./. |
| Permission denied | Jalankan chmod +x cs-agent. |
| cannot execute binary file: Exec format error | Program tidak cocok dengan jenis server. Jalankan uname -m: x86_64 memerlukan file amd64, aarch64 memerlukan file arm64. Download file yang sesuai, lalu ulangi langkah 3 dan 4. |
| required flag(s) "cluster" not set | Bagian --cluster <ALAMAT-ONBOARDING> belum ditulis. Salin ulang perintah langkah 5. |
| read --ca-cert / contains no valid PEM certificate | File ca-onboarding.crt tidak ditemukan atau rusak. Pastikan namanya persis (bukan .crt.txt), atau download ulang. |
| certificate signed by unknown authority | Gunakan ca-onboarding.crt dari halaman Download — bukan ca.crt buatan langkah 6. |
| authentication handshake failed / certificate is valid for … | Alamat onboarding salah. Salin persis dari halaman Mulai di portal; jangan memakai alamat IP. |
| Authentication failed / kode kedaluwarsa | Persetujuan di browser tidak selesai sebelum batas waktu, atau ditolak. Ulangi login dan selesaikan lebih cepat. |
| mTLS configuration required … | File .env tidak ada atau kurang lengkap. Jalankan dari folder CS-Agent dan ulangi langkah 7. |
| secret files are accessible by other users | File rahasia bisa dibaca user lain. Jalankan perintah chmod yang tertulis di pesan tersebut (misalnya chmod 600 ./server.key), lalu nyalakan lagi. |
| Failed to load TLS certificates | Sertifikat yang disebut di .env tidak ada atau tidak cocok. Pastikan server.crt dibuat dari ca.crt yang sama. |
| address already in use / Only one usage of each socket address | Port sudah dipakai, atau CS-Agent sudah menyala di jendela lain. Matikan yang lain, atau ganti port di .env. |
| sudah ada — hapus dulu … atau tambahkan --force | Sertifikat itu sudah pernah dibuat. Biasanya cukup lanjut ke langkah berikutnya. |
| Enrollment failed / please login again | Lakukan login ulang. Jika masih gagal, hubungi admin TILE dengan pesan lengkapnya. |
| not configured / could not fetch … policy | Pengaturan akun Anda belum lengkap di sisi TILE. Hubungi admin TILE. |
| application_not_allowed | Aplikasi pada API key belum diizinkan untuk server ini. Izinkan di menu Agent pada portal. |
| client_binding_failed | Sertifikat tidak cocok dengan client binding aplikasi pada API key. Lihat langkah 11a dan contoh kasus di 11e. |
| source_ip_not_allowed | Alamat aplikasi tidak ada di daftar IP aplikasi itu pada Network agent. Lihat langkah 11b. |
| client_certificate_revoked / bad certificate | Sertifikat aplikasi sudah dicabut. Terbitkan sertifikat baru untuk aplikasi itu (langkah 6c). |
| client_certificate_status_unavailable | CRL lokal sudah lewat masa berlaku atau rusak, sehingga semua aplikasi ditolak. Jalankan cert crl (langkah 11c). |