Mari Enkripsi validasi certbot melalui HTTPS

16

Dari dokumentasi plugin webroot Certbot

Plugin webroot berfungsi dengan membuat file sementara untuk setiap domain yang Anda minta di ${webroot-path}/.well-known/acme-challenge. Kemudian server validasi Let's Encrypt membuat permintaan HTTP untuk memvalidasi bahwa DNS untuk setiap domain yang diminta menyelesaikan ke server yang menjalankan certbot.

Pada server rumah yang digunakan secara pribadi, saya memiliki port 80 dinonaktifkan, yaitu, tidak ada penerusan port diaktifkan di router. Saya tidak punya niat membuka port itu.

Bagaimana saya bisa memberi tahu certbot bahwa server validasi tidak boleh membuat permintaan HTTP, tetapi permintaan HTTPS (port 443), untuk memvalidasi kepemilikan domain?

Server validasi bahkan tidak perlu memvalidasi sertifikat server rumah, karena sudah menggunakan HTTP secara default. Saya mungkin memiliki sertifikat yang ditandatangani sendiri, atau sertifikat yang dapat diperbarui, tetapi itu tidak masalah.

Saat ini saya dalam situasi di mana saya perlu mengaktifkan port 80 forwarding serta server di atasnya untuk membuat / memperbarui sertifikat. Ini tidak memungkinkan saya menggunakan cronjob untuk memperbarui sertifikat. Yah, dengan cukup banyak pekerjaan, tapi saya sudah punya server mendengarkan 443, yang bisa melakukan pekerjaan dengan baik.

Daniel F
sumber

Jawaban:

8

Sebagaimana dilaporkan dalam https://community.letsencrypt.org/t/shouldnt-verification-via-dns-record-be-a-priority/604/47 yang letsencrypt.sh updater mendukung validasi melalui DNS. Beberapa skrip updater tampaknya telah mengimplementasikan ini. Namun, metode HTTP adalah yang paling sederhana untuk diterapkan untuk konfigurasi awal.

Skrip yang Anda miliki dapat menggunakan TNS SNI atau Proof of Possession of Key Sebelumnya untuk pembaruan. Spesifikasi dapat ditemukan di https://tools.ietf.org/html/draft-ietf-acme-acme-01#s-7-7.5 . Jika demikian, Anda tidak perlu mengaktifkan HTTP.

BillThor
sumber
Terima kasih, saya lupa tentang verifikasi berbasis DNS. Sudah relatif sulit untuk menemukan info tentang itu, karena dokumen hampir tidak menyebutkannya. Tidak ada pengait untuk Namecheap, jadi saya akan mencoba menerapkannya sekarang dan memeriksa cara kerjanya. Saya akan menerima jawabannya jika itu berfungsi seperti yang diharapkan, tetapi mungkin perlu beberapa waktu karena saat ini tidak ada domain untuk pembaruan. Lain saya harus memanggang perintah --webroot ke server sehingga server bertindak sebagai pembungkus yang dapat cronjobed.
Daniel F
Baru diperiksa, Namecheap's API sangat buruk (menimpa SEMUA catatan untuk menambah atau memodifikasi satu), DNS bukan pilihan dalam kasus ini. Saya juga menggunakan pendaftar lain, yang membuat masalah lebih rumit (manajemen kunci API). Kunci API Namecheap memberi Anda bahkan akses untuk mendaftarkan domain baru atau mentransfer domain, ini tidak aman sebagai FK.
Daniel F
@DanielF Saya berharap validasi DNS atau HTTP tidak akan digunakan untuk pembaruan. Tidak diperlukan karena server Anda harus lulus TLS SNI untuk sertifikat yang ada, dan permintaan dapat ditandatangani dengan sertifikat yang ada. Harus cukup. DNS dan HTTP adalah metode yang masuk akal untuk mendaftar. Anda harus memiliki 30 hari untuk menyelesaikan masalah saat sertifikat pertama Anda siap untuk perpanjangan.
BillThor