Langsung ke konten
Debian

Belajar SSL dengan OpenSSL di Debian 13: Bangun CA Sendiri untuk HTTPS, Mail Server, Webmail, dan Active Directory

November 7, 2026 · 15 menit baca · Walid Umar

Pernah membuka website lab dan disambut peringatan “Your connection is not private”? Banyak admin langsung klik Proceed anyway dan melanjutkan hidup. Kebiasaan itu berbahaya, karena peringatan yang selalu diabaikan membuat pengguna tidak bisa lagi membedakan koneksi yang aman dari yang disadap.

Di artikel ini kita membangun infrastrukturnya dengan benar. Kita buat Certificate Authority (CA) sendiri memakai OpenSSL, lalu menerbitkan sertifikat untuk dua server layanan: web server dengan webmail, dan mail server. Kita juga bahas kebutuhan sertifikat untuk LDAPS pada Active Directory. Semuanya berjalan di Debian 13 (Trixie).

Artikel ini cocok untuk siswa SMK TKJ yang menyiapkan UKK atau LKS ITNSA, dan untuk sysadmin yang ingin memahami mekanisme TLS dari dalam, bukan sekadar menyalin perintah.

Mengapa Memahami SSL/TLS Itu Penting

Istilah “SSL” sudah dipakai secara kebiasaan. Protokol yang sebenarnya aktif hari ini adalah TLS (Transport Layer Security). SSL 2.0/3.0 sudah usang dan tidak boleh dipakai. Kita tetap memakai kata “SSL” karena orang mencarinya begitu, tetapi yang kita konfigurasi adalah TLS 1.2 dan TLS 1.3.

TLS memberi tiga jaminan:

  • Confidentiality: data dienkripsi, sehingga password webmail tidak terbaca di jaringan.
  • Integrity: data tidak bisa diubah di tengah jalan tanpa ketahuan.
  • Authentication: klien yakin sedang bicara dengan server asli, bukan penipu.

Poin ketiga sering dilupakan. Enkripsi tanpa autentikasi hanya berarti kita terenkripsi dengan siapa pun, termasuk penyerang. Di sinilah CA berperan.

Analogi sederhana: sertifikat itu seperti KTP server. CA adalah Dukcapil yang menerbitkannya. Kita percaya KTP karena kita percaya institusi penerbitnya. Kalau kita membuat “Dukcapil” sendiri, hanya perangkat yang sudah diberi tahu untuk memercayainya yang akan menerima KTP tersebut. Itulah yang disebut trust distribution.

Kapan Pakai CA Internal, Kapan Pakai CA Publik

KebutuhanPilihan
Lab, praktikum, jaringan internalCA internal (OpenSSL)
Layanan internal kampus/perusahaanCA internal (idealnya AD CS, step-ca, atau EJBCA)
Website yang diakses publikCA publik (mis. Let’s Encrypt)

OpenSSL cocok untuk belajar dan lab. Untuk production skala besar, pertimbangkan tooling CA yang punya audit, otomasi, dan manajemen siklus hidup sertifikat.

Topologi dan Rencana Implementasi

                +---------------------------+
                |  ca.lab.local             |
                |  192.168.10.10            |
                |  Root CA (OpenSSL)        |
                +-------------+-------------+
                              | menandatangani CSR
              +---------------+----------------+
              |                                |
 +------------v-----------+      +-------------v------------+
 | Server 1 (web)         |      | Server 2 (mail)          |
 | web.lab.local          |      | mail.lab.local           |
 | 192.168.10.11          |      | 192.168.10.12            |
 | Nginx HTTPS + Roundcube|      | Postfix + Dovecot        |
 | webmail.lab.local      |      | (+ opsional: LDAPS AD)   |
 +------------------------+      +--------------------------+

Asumsi (Lab): tiga VM Debian 13 di jaringan 192.168.10.0/24, domain lab.local, resolusi nama lewat /etc/hosts atau DNS internal. Kita memakai satu Root CA agar mudah dipelajari. Di production, root CA dibuat offline dan hanya menandatangani Intermediate CA.

Alur kerjanya selalu sama untuk setiap layanan:

  1. Server membuat private key sendiri.
  2. Server membuat CSR (Certificate Signing Request).
  3. CSR dikirim ke CA, lalu CA menandatangani dan menghasilkan sertifikat.
  4. Sertifikat dipasang di layanan.
  5. Klien diberi sertifikat root CA supaya memercayainya.

Private key server tidak pernah meninggalkan server. Hanya CSR yang dikirim.

Langkah 1: Persiapan Dasar

Di ketiga server:

sudo apt update
sudo apt install -y openssl ca-certificates
openssl version
timedatectl status

Pastikan waktu sinkron. Sertifikat punya masa berlaku, dan jam yang melenceng membuat sertifikat valid terlihat “belum berlaku” atau “kedaluwarsa”. Atur juga /etc/hosts di semua node:

192.168.10.10 ca.lab.local
192.168.10.11 web.lab.local webmail.lab.local
192.168.10.12 mail.lab.local

Langkah 2: Membangun Root CA di Server CA

Semua langkah ini dijalankan di ca.lab.local sebagai root (sudo -i).

Struktur direktori

mkdir -p /root/ca/{certs,crl,newcerts,private,csr}
chmod 700 /root/ca/private
touch /root/ca/index.txt
echo 1000 > /root/ca/serial
echo 1000 > /root/ca/crlnumber

Fungsinya: index.txt adalah database sertifikat yang diterbitkan, serial adalah nomor seri berikutnya, dan private/ menyimpan kunci CA yang harus dilindungi.

File konfigurasi /root/ca/openssl.cnf

[ ca ]
default_ca = CA_default

[ CA_default ]
dir              = /root/ca
certs            = $dir/certs
crl_dir          = $dir/crl
new_certs_dir    = $dir/newcerts
database         = $dir/index.txt
serial           = $dir/serial
crlnumber        = $dir/crlnumber
private_key      = $dir/private/ca.key.pem
certificate      = $dir/certs/ca.cert.pem
crl              = $dir/crl/ca.crl.pem
default_md       = sha256
default_days     = 397
default_crl_days = 30
policy           = policy_loose
unique_subject   = no

[ policy_loose ]
countryName            = optional
stateOrProvinceName    = optional
localityName           = optional
organizationName       = optional
organizationalUnitName = optional
commonName             = supplied
emailAddress           = optional

[ req ]
default_bits       = 4096
distinguished_name = req_dn
string_mask        = utf8only
default_md         = sha256

[ req_dn ]
commonName = Common Name

[ v3_ca ]
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints       = critical, CA:true
keyUsage               = critical, digitalSignature, cRLSign, keyCertSign

Bagian v3_ca penting. CA:true dan keyCertSign menandai sertifikat ini sebagai CA yang boleh menandatangani sertifikat lain.

Membuat private key dan sertifikat Root CA

cd /root/ca
openssl genrsa -aes256 -out private/ca.key.pem 4096
chmod 400 private/ca.key.pem

openssl req -config openssl.cnf \
  -key private/ca.key.pem -new -x509 -days 3650 -sha256 \
  -extensions v3_ca \
  -subj "/C=ID/O=Lab TKJ/CN=Lab TKJ Root CA" \
  -out certs/ca.cert.pem

Opsi -aes256 meminta passphrase untuk melindungi kunci. Jangan lupa passphrase ini, karena tanpanya CA tidak bisa menandatangani apa pun. Kalau kunci CA bocor, semua sertifikat yang pernah diterbitkan tidak lagi bisa dipercaya.

Verifikasi

openssl x509 -in certs/ca.cert.pem -noout -subject -issuer -dates
openssl x509 -in certs/ca.cert.pem -noout -text | grep -A1 "Basic Constraints"

Hasil yang diharapkan: subject dan issuer sama (self-signed), dan CA:TRUE.

Langkah 3: Membuat Key dan CSR di Server Layanan

Di sini kita menerapkan prinsip bahwa key dibuat di server pemakai, bukan di CA.

Server 1 (web + webmail)

sudo mkdir -p /etc/ssl/lab
cd /etc/ssl/lab

sudo openssl genrsa -out /etc/ssl/private/web.lab.local.key.pem 2048
sudo chmod 640 /etc/ssl/private/web.lab.local.key.pem
sudo chown root:ssl-cert /etc/ssl/private/web.lab.local.key.pem

sudo openssl req -new -key /etc/ssl/private/web.lab.local.key.pem \
  -subj "/C=ID/O=Lab TKJ/CN=web.lab.local" \
  -addext "subjectAltName=DNS:web.lab.local,DNS:webmail.lab.local" \
  -out web.lab.local.csr.pem

Server 2 (mail)

sudo mkdir -p /etc/ssl/lab
cd /etc/ssl/lab

sudo openssl genrsa -out /etc/ssl/private/mail.lab.local.key.pem 2048
sudo chmod 640 /etc/ssl/private/mail.lab.local.key.pem
sudo chown root:ssl-cert /etc/ssl/private/mail.lab.local.key.pem

sudo openssl req -new -key /etc/ssl/private/mail.lab.local.key.pem \
  -subj "/C=ID/O=Lab TKJ/CN=mail.lab.local" \
  -addext "subjectAltName=DNS:mail.lab.local" \
  -out mail.lab.local.csr.pem

Kirim CSR ke server CA

scp /etc/ssl/lab/web.lab.local.csr.pem user@ca.lab.local:/root/ca/csr/

Peringatan penting tentang SAN: browser dan klien modern mengabaikan Common Name dan hanya memeriksa Subject Alternative Name (SAN). Kalau nama host yang diakses tidak ada di SAN, muncul error hostname mismatch, walaupun CA-nya dipercaya. Ini penyebab paling umum masalah “sertifikat sudah dipasang tapi tetap error”.

Langkah 4: CA Menandatangani CSR

Di server CA, buat file extension per server. Untuk web server (/root/ca/csr/web.ext):

basicConstraints = CA:FALSE
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
subjectAltName = DNS:web.lab.local,DNS:webmail.lab.local

Untuk mail server (/root/ca/csr/mail.ext), isinya sama, dengan SAN DNS:mail.lab.local.

Tanda tangani:

cd /root/ca
openssl ca -config openssl.cnf -extfile csr/web.ext \
  -days 397 -notext -md sha256 \
  -in csr/web.lab.local.csr.pem -out certs/web.lab.local.cert.pem

openssl ca -config openssl.cnf -extfile csr/mail.ext \
  -days 397 -notext -md sha256 \
  -in csr/mail.lab.local.csr.pem -out certs/mail.lab.local.cert.pem

Kita sengaja memakai -extfile dengan SAN yang kita tulis sendiri. Cara ini lebih aman daripada menyalin ekstensi dari CSR secara otomatis, karena pemohon tidak bisa menyisipkan ekstensi berbahaya (misalnya CA:true). Ini contoh prinsip least privilege di sisi CA.

Verifikasi:

openssl verify -CAfile certs/ca.cert.pem certs/web.lab.local.cert.pem
openssl x509 -in certs/web.lab.local.cert.pem -noout -text | grep -A1 "Alternative Name"
cat index.txt

Hasil yang diharapkan: OK, dan SAN sesuai rencana.

Kirim balik sertifikat server dan ca.cert.pem ke masing-masing server:

scp certs/web.lab.local.cert.pem certs/ca.cert.pem user@web.lab.local:/tmp/
scp certs/mail.lab.local.cert.pem certs/ca.cert.pem user@mail.lab.local:/tmp/

Langkah 5: Trust Distribution di Debian

Agar klien Debian (termasuk server yang saling terhubung) memercayai CA kita:

sudo cp /tmp/ca.cert.pem /usr/local/share/ca-certificates/lab-tkj-root-ca.crt
sudo update-ca-certificates

File harus berekstensi .crt dan berformat PEM. Hasilnya muncul sebagai 1 added di output. Setelah itu curl, openssl s_client, dan aplikasi yang memakai trust store sistem akan memercayai CA tersebut.

Untuk Windows, impor ca.cert.pem (ubah ekstensi jadi .crt) ke Trusted Root Certification Authorities. Untuk perangkat banyak, distribusikan lewat Group Policy.

Langkah 6: HTTPS dengan Nginx (Server 1)

sudo apt install -y nginx
sudo cp /tmp/web.lab.local.cert.pem /etc/ssl/lab/web.lab.local.cert.pem

Konfigurasi /etc/nginx/sites-available/web.lab.local:

server {
    listen 80;
    server_name web.lab.local webmail.lab.local;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    http2 on;
    server_name web.lab.local;

    ssl_certificate     /etc/ssl/lab/web.lab.local.cert.pem;
    ssl_certificate_key /etc/ssl/private/web.lab.local.key.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;

    root /var/www/html;
    index index.html;
}

Aktifkan dan uji:

sudo ln -s /etc/nginx/sites-available/web.lab.local /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
curl -v https://web.lab.local 2>&1 | grep -E "subject|issuer|SSL certificate verify"
openssl s_client -connect web.lab.local:443 -servername web.lab.local </dev/null 2>/dev/null | grep -E "Verify return code"

Hasil yang diharapkan: Verify return code: 0 (ok). Jika berisi unable to get local issuer certificate, berarti trust distribution di klien belum beres.

Langkah 7: Webmail (Roundcube) di Atas HTTPS

Webmail memiliki dua koneksi yang perlu diamankan:

  1. Browser ke Roundcube lewat HTTPS (Nginx, sama seperti di atas).
  2. Roundcube ke IMAP/SMTP mail server (backend).

Banyak orang hanya mengamankan yang pertama. Padahal kalau backend memakai koneksi polos, password tetap lewat jaringan tanpa enkripsi. Di config.inc.php Roundcube:

$config['imap_host'] = 'ssl://mail.lab.local:993';
$config['smtp_host'] = 'tls://mail.lab.local:587';
$config['imap_conn_options'] = [
  'ssl' => [
    'verify_peer'      => true,
    'verify_peer_name' => true,
    'cafile'           => '/etc/ssl/certs/ca-certificates.crt',
  ],
];
$config['smtp_conn_options'] = $config['imap_conn_options'];

Pakai nama host yang ada di SAN (mail.lab.local), jangan localhost atau IP. Kalau tidak, verifikasi nama gagal. Jangan “menyelesaikan” masalah dengan mematikan verify_peer, karena itu menghilangkan fungsi autentikasi TLS.

Langkah 8: Mail Server (Postfix + Dovecot) di Server 2

sudo apt install -y postfix dovecot-imapd
sudo cp /tmp/mail.lab.local.cert.pem /etc/ssl/lab/mail.lab.local.cert.pem

Postfix

sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/lab/mail.lab.local.cert.pem'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/mail.lab.local.key.pem'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtpd_tls_auth_only = yes'
sudo postconf -e 'smtpd_tls_protocols = >=TLSv1.2'
sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt'
sudo systemctl reload postfix

Opsi smtpd_tls_auth_only = yes memastikan login hanya diterima setelah koneksi dienkripsi. Untuk port submission 587, aktifkan juga entry submission di master.cf dengan smtpd_tls_security_level=encrypt.

Dovecot

Pengaturan sertifikat Dovecot berubah antara versi 2.3 dan 2.4, jadi cek versi dulu:

dovecot --version

Untuk Dovecot 2.3 (/etc/dovecot/conf.d/10-ssl.conf):

ssl = required
ssl_cert = </etc/ssl/lab/mail.lab.local.cert.pem
ssl_key = </etc/ssl/private/mail.lab.local.key.pem
ssl_min_protocol = TLSv1.2

Untuk Dovecot 2.4, nama parameternya berbeda (ssl_server_cert_file, ssl_server_key_file). Cek dokumentasi resmi versi yang terpasang sebelum menyalin. Setelah itu:

sudo doveconf -n | grep -i ssl
sudo systemctl restart dovecot

Verifikasi mail TLS

openssl s_client -connect mail.lab.local:993 -CAfile /tmp/ca.cert.pem </dev/null | grep "Verify return code"
openssl s_client -starttls smtp -connect mail.lab.local:587 -CAfile /tmp/ca.cert.pem </dev/null | grep "Verify return code"

Keduanya harus menghasilkan 0 (ok).

Langkah 9: Sertifikat untuk Active Directory (LDAPS)

Active Directory memakai LDAP, dan tanpa TLS bind password bisa terlihat di jaringan. LDAPS (port 636) mengamankannya. Persyaratan sertifikat untuk domain controller:

  • SAN berisi FQDN DC (mis. dc1.lab.local).
  • Extended Key Usage mencakup Server Authentication.
  • Private key tersedia di DC.
  • Klien memercayai CA penerbitnya.

Samba AD DC di Linux (smb.conf, bagian [global]):

tls enabled  = yes
tls keyfile  = /etc/samba/tls/dc1.key.pem
tls certfile = /etc/samba/tls/dc1.cert.pem
tls cafile   = /etc/samba/tls/ca.cert.pem

Uji dari klien:

openssl s_client -connect dc1.lab.local:636 -CAfile /tmp/ca.cert.pem </dev/null | grep "Verify return code"
ldapsearch -H ldaps://dc1.lab.local -x -b "dc=lab,dc=local" -s base

Windows Server AD DC: sertifikat harus masuk ke store NTDS\Personal atau Local Computer\Personal beserta private key-nya, biasanya lewat file PKCS#12. Di environment Windows, AD CS biasanya lebih praktis dan bisa auto-enrollment. OpenSSL cocok untuk memahami konsepnya.

Studi Kasus Sederhana: “Webmail Sekolah Tidak Bisa Login”

Gejala: guru membuka https://webmail.lab.local dengan lancar, tetapi login selalu gagal dengan “Connection to storage server failed”.

Hipotesis dan pengujian:

  1. Apakah Dovecot hidup? systemctl status dovecot hasilnya aktif.
  2. Apakah port terbuka? ss -tlnp | grep 993 hasilnya listen.
  3. Apakah TLS diterima dari server webmail? openssl s_client -connect mail.lab.local:993 dari Server 1 menghasilkan unable to get local issuer certificate.

Akar masalah: CA belum dipasang di trust store Server 1, sehingga Roundcube menolak sertifikat mail server.

Solusi: pasang ca.cert.pem di /usr/local/share/ca-certificates/ lalu jalankan update-ca-certificates. Pencegahan: masukkan langkah trust distribution ke checklist provisioning, atau otomasikan dengan Ansible.

Troubleshooting Masalah Umum

GejalaPenyebab umumCara cek dan solusi
certificate verify failedCA belum dipercaya klienupdate-ca-certificates, cek file .crt
Hostname mismatchNama tidak ada di SANopenssl x509 -noout -text, terbitkan ulang dengan SAN benar
Nginx gagal start (key values mismatch)Key dan sertifikat tidak berpasanganBandingkan hash (lihat di bawah)
Permission denied baca keyHak akses salahchown root:ssl-cert, chmod 640
Sertifikat “belum berlaku”Jam server salahtimedatectl, aktifkan NTP
Sertifikat kedaluwarsaTidak ada monitoring masa berlakuCek berkala (lihat di bawah)

Memastikan key dan sertifikat berpasangan:

openssl x509 -noout -pubkey -in web.lab.local.cert.pem | openssl sha256
openssl pkey -pubout -in /etc/ssl/private/web.lab.local.key.pem | openssl sha256

Kedua hash harus identik.

Memeriksa masa berlaku:

openssl x509 -in web.lab.local.cert.pem -noout -enddate
openssl x509 -in web.lab.local.cert.pem -noout -checkend 2592000 && echo "Aman > 30 hari" || echo "Segera perpanjang"

Mencabut Sertifikat (Revocation)

Jika key server bocor atau server dihapus, sertifikat harus dicabut:

cd /root/ca
openssl ca -config openssl.cnf -revoke certs/web.lab.local.cert.pem
openssl ca -config openssl.cnf -gencrl -out crl/ca.crl.pem
openssl crl -in crl/ca.crl.pem -noout -text

CRL harus dipublikasikan dan layanan harus dikonfigurasi untuk memeriksanya. Tanpa itu, pencabutan hanya tercatat di CA tanpa efek nyata.

Best Practice dan Tips Profesional

  • Lindungi key CA. Di production, simpan root CA offline (VM yang dimatikan, atau HSM) dan gunakan Intermediate CA untuk operasional harian.
  • Gunakan masa berlaku pendek. Sertifikat server 397 hari atau kurang membatasi dampak kebocoran dan membiasakan proses perpanjangan.
  • Selalu isi SAN, termasuk semua nama alias yang dipakai pengguna.
  • Aktifkan hanya TLS 1.2 dan 1.3.
  • Jangan matikan verifikasi sertifikat hanya demi “supaya jalan” (-k pada curl, verify_peer=false).
  • Backup key CA dan index.txt secara terenkripsi dan simpan di lokasi terpisah. Lakukan restore test.
  • Otomasikan distribusi trust dan perpanjangan dengan Ansible, apalagi jika servernya banyak.
  • Dokumentasikan: siapa pemilik tiap sertifikat, tanggal kedaluwarsa, dan prosedur perpanjangan.

Ringkasan

  • TLS memberi enkripsi, integritas, dan autentikasi. CA adalah dasar autentikasinya.
  • Alur dasarnya: key di server, CSR ke CA, CA menandatangani, pasang di layanan, distribusikan trust.
  • SAN wajib diisi sesuai nama yang diakses klien.
  • Webmail perlu pengamanan di dua sisi: browser ke web dan web ke IMAP/SMTP.
  • AD butuh sertifikat dengan EKU Server Authentication untuk LDAPS.
  • Verifikasi selalu dengan openssl verify dan openssl s_client.
  • Lab boleh sederhana, tetapi production butuh Intermediate CA, revocation, monitoring, dan backup.

Punya pengalaman error sertifikat yang paling menjengkelkan? Tulis di kolom komentar dan mari kita bedah bersama. Kalau artikel ini membantu, bagikan ke rekan sesama admin atau siswa TKJ yang sedang menyiapkan UKK.

FAQ

Pertanyaan: Apa bedanya SSL dan TLS?
Jawaban: TLS adalah penerus SSL. SSL sudah usang dan tidak aman. Istilah “SSL” masih dipakai secara umum, tetapi yang berjalan di server modern adalah TLS 1.2 dan 1.3.

Pertanyaan: Apakah sertifikat dari CA OpenSSL sendiri bisa dipakai untuk website publik?
Jawaban: Tidak. Browser publik tidak memercayai CA pribadi kita. Gunakan CA internal hanya untuk jaringan yang klien-kliennya sudah memasang root CA, dan CA publik (mis. Let’s Encrypt) untuk website publik.

Pertanyaan: Mengapa browser tetap error padahal sertifikat sudah terpasang?
Jawaban: Penyebab umumnya ada dua: root CA belum dipercaya di klien, atau nama domain yang diakses tidak tercantum di SAN. Periksa keduanya dengan openssl s_client dan openssl x509 -text.

Pertanyaan: Haruskah private key dibuat di server CA?
Jawaban: Sebaiknya tidak. Buat key di server pemakai lalu kirim hanya CSR ke CA, supaya private key tidak pernah berpindah lewat jaringan.

Pertanyaan: Apa itu SAN dan mengapa wajib?
Jawaban: SAN (Subject Alternative Name) adalah daftar nama host atau IP yang sah untuk sertifikat. Klien modern memeriksa SAN, bukan Common Name, jadi tanpa SAN yang benar sertifikat akan ditolak.

Pertanyaan: Apakah satu sertifikat bisa dipakai untuk web dan mail server?
Jawaban: Bisa, bila semua nama host ada di SAN. Namun memisahkan sertifikat per server atau layanan lebih aman karena kebocoran satu key tidak berdampak ke layanan lain.

Pertanyaan: Bagaimana cara mengetahui sertifikat akan segera kedaluwarsa?
Jawaban: Gunakan openssl x509 -noout -enddate atau -checkend, lalu jadwalkan lewat cron atau sistem monitoring agar ada peringatan sebelum masa berlaku habis.

Bagaimana pengalaman Bapak/Ibu membangun CA sendiri? Ada langkah yang masih membingungkan atau error yang belum terpecahkan? Tulis di kolom komentar, kita diskusikan bersama.

Jika artikel ini bermanfaat, bagikan ke rekan sysadmin, guru TKJ, atau siswa yang sedang persiapan UKK dan LKS ITNSA. Lanjutkan belajar dengan membaca artikel terkait di walidumar.my.id tentang SSH hardening, Fail2ban, dan administrasi server Debian. Ikuti blog dan kanal YouTube untuk panduan sysadmin dan jaringan berikutnya.

Dukung kami dengan Subscribe & Join Membership channel YouTube | Walid Umar

Akses video pembelajaran eksklusif, materi persiapan UKK (Uji Kompetensi Siswa) dan Penyelesaian Soal LKS ITNSA

Tinggalkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Dilindungi Oleh
Shield Security