dig untuk record A menunjukkan IP baru. Yang terlewat adalah record AAAA, record DNS untuk alamat IPv6, yang masih menunjuk ke server lama.
Catatan ini merangkum apa yang sebenarnya terjadi, bagian mana yang gampang salah paham, dan cara melatihnya dengan aman di VPS uji sebelum menghadapinya di server produksi.
Kenapa record A yang benar belum cukup
Bagaimana validator memperlakukan IPv6
/.well-known/acme-challenge/ pada domain kamu. CA adalah pihak yang menerbitkan sertifikat. File token ini dibuat oleh AutoSSL atau ACME client di server baru.
Sesuai dokumentasi Let's Encrypt yang aku pahami, kalau domain punya record AAAA, validator mencoba IPv6 lebih dulu. Ada dua kemungkinan hasilnya, dan perbedaannya penting.
Kemungkinan pertama, koneksi IPv6 gagal di level TCP: timeout atau ditolak. Dalam kasus ini Let's Encrypt biasanya mencoba ulang lewat IPv4. Kalau IPv4 benar, validasi bisa saja lolos. Karena itu record AAAA yang mati kadang tidak langsung ketahuan.
Kemungkinan kedua, koneksi IPv6 berhasil tapi yang menjawab server lama. Server lama tidak punya file token yang baru dibuat, jadi biasanya membalas 404, menampilkan halaman default, atau melakukan redirect ke tempat lain. Dari sudut pandang validator, koneksinya sukses tapi isinya salah. Validator tidak punya alasan untuk mencoba IPv4, jadi validasi langsung gagal.
Kasus kedua inilah yang paling membingungkan. Selama server lama masih menyala, misalnya karena belum dimatikan sambil menunggu masa transisi, AAAA yang salah justru "bekerja" dan terus menggagalkan validasi.
Untuk provider lain di AutoSSL cPanel, misalnya Sectigo, cara validasinya bisa berbeda. Jangan langsung menganggap perilakunya sama. Cek dokumentasi provider yang kamu pakai.
Membaca tanda-tandanya di log dan di DNS
2001:db8::10) padahal server baru tidak memakai alamat tersebut, arah masalahnya sudah jelas.
Di cPanel, log AutoSSL bisa dilihat dari WHM di bagian Manage AutoSSL. Struktur menu dan isi lognya bisa berbeda antarversi, jadi cari baris DCV untuk domain yang gagal. DCV (Domain Control Validation) adalah proses pembuktian bahwa kita memang mengontrol domain itu. Kalau penyebab DCV gagal ternyata bukan IPv6, artikel Kenapa AutoSSL Gagal Diperbarui Padahal Domain Sudah Mengarah ke Server membahas penyebab lain yang lebih umum.
Setelah itu, cocokkan dengan DNS. Cek record A dan AAAA untuk domain utama sekaligus www, karena keduanya biasanya ikut masuk ke sertifikat yang sama:
BASH
# Lihat jawaban dari resolver yang dipakai mesin kamu
dig +short A example.com
dig +short AAAA example.com
dig +short A www.example.com
dig +short AAAA www.example.com
# Cari nameserver authoritative, lalu tanya langsung ke sana
# (ganti ns1.example-dns.net dengan hasil query NS)
dig +short NS example.com
dig @ns1.example-dns.net +short AAAA example.comdig biasa mungkin masih menampilkannya sebentar. Sebaliknya, kalau authoritative masih mengembalikan AAAA, berarti record-nya memang masih ada di zone. Hati-hati juga kalau nameserver domain masih di provider lama. Mengedit zone di server baru tidak berpengaruh sama sekali selama domain belum mengarah ke nameserver tersebut.
Langkah berikutnya: buktikan jalur mana yang dijawab oleh server mana. Tes yang sederhana adalah meminta path challenge lewat IPv4 dan IPv6 secara terpisah:
BASH
# Paksa koneksi lewat IPv4, lalu lewat IPv6
# Nama file tidak perlu ada; yang dibandingkan adalah siapa yang menjawab
curl -4 -sI http://example.com/.well-known/acme-challenge/tes-jalur
curl -6 -sI http://example.com/.well-known/acme-challenge/tes-jalurServer, dan header lain yang khas, seperti Location kalau ada redirect. Kalau keduanya terlihat berasal dari stack yang berbeda, kamu sedang melihat dua server yang berbeda. Perintah curl -6 hanya jalan kalau mesin yang menjalankannya punya konektivitas IPv6. Kalau tidak, jalankan dari mesin lain yang punya IPv6.
Kalau ternyata jalur IPv6 sampai ke server baru tapi tetap gagal karena redirect, masalahnya bergeser ke konfigurasi web server. Pembahasannya ada di Kenapa Redirect HTTPS Global Bikin Perpanjangan Otomatis ACME Gagal.
Memutuskan: perbaiki atau hapus record AAAA
curl -6 di atas setelah TTL habis. Mengarahkan AAAA ke IPv6 yang belum di-bind web server hanya memindahkan masalah ke tempat lain.
Kalau server baru tidak punya IPv6, atau punya tapi belum disiapkan untuk domain ini, menghapus record AAAA biasanya pilihan yang paling aman. Setelah dihapus, domain hanya punya jalur IPv4, dan validator serta pengunjung sama-sama memakai jalur itu. Konsekuensinya, pengunjung yang hanya punya IPv6 tanpa mekanisme translasi tidak bisa mengakses situs. Bagi kebanyakan situs ini trade-off yang wajar, tapi tetap perlu disadari.
Apa pun pilihannya, setelah mengubah DNS:
- Tunggu sampai TTL lama record AAAA habis.
- Cek ulang ke nameserver authoritative dan ke resolver publik.
- Jalankan ulang AutoSSL untuk domain tersebut atau tunggu jadwal berikutnya.
Latihan aman di VPS uji
--dry-run di certbot yang memakai lingkungan staging Let's Encrypt. Dengan begitu kamu tidak terkena rate limit produksi saat sengaja membuat validasi gagal berulang kali. Perhatikan alamat IP yang disebut di pesan error pada tiap skenario. Setelah melihatnya sendiri dua tiga kali, membaca log AutoSSL di server produksi jadi jauh lebih cepat.
Di meja support, urutan cek yang paling hemat waktu biasanya begini:
- Lihat IP yang disebut di error validasi.
- Bandingkan dengan hasil
diguntuk A dan AAAA dari nameserver authoritative. - Uji jalur IPv4 dan IPv6 dengan curl.
