Menemukan penyebab masalah dehidrasi pada server ACME selain LetsEncrypt

Sebastian Krause bertekad sumber ketidakcocokan yang aneh dengan layanan Bypass naskah kering sekali, digunakan untuk mengotomatiskan penerimaan sertifikat TLS menggunakan protokol ACME. Baik klien referensi maupun uacme bekerja dengan Bypass, tetapi tidak mengalami dehidrasi (lebih tepatnya, ini juga bekerja dengan beberapa solusi, tetapi secara eksklusif dalam mode dns-1).

Alasannya ternyata sepele: alih-alih mengurai respons dalam format JSON secara nyata, penulis dehidrasi menggunakan fitur pemformatan keluaran JSON tertentu dari layanan Let's Encrypt dan menguraikannya menggunakan ekspresi reguler. Namun Bypass tidak mengembalikan JSON yang diformat dengan indah, tetapi JSON yang diperkecil, dan yang digunakan ekspresi reguler tidak bekerja. Pendekatan ini tidak mengecualikan masalah dengan LetsEncrypt jika layanan ini mengubah format penerbitan di masa depan tanpa peringatan, namun tetap sepenuhnya dalam kerangka protokol resmi.

Saat membahas masalah tersebut, disarankan untuk menggunakan parser JSON eksternal seperti json_pp ΠΈΠ»ΠΈ jq (tambahkan 'jq -r ".authorizations | .[]"' ke pipa untuk penguraian yang benar).
Kerugian dari pendekatan ini adalah melemahnya gagasan untuk menggunakan cara yang minimal dan mudah diverifikasi, serta masalah penanganan kesalahan.

Penulis proyek dehidrasi (proyek baru-baru ini habis terjual Apilayer GmbH) sepakat, bahwa penguraian JSON adalah masalah besar, tetapi dia tidak menganggap menambahkan parser eksternal sebagai ide yang baik, karena salah satu keuntungan utama skrip ini adalah kurangnya pengikatan pada dependensi eksternal. Dia saat ini sedang sibuk, namun berharap dapat mencurahkan perhatiannya untuk menyelesaikan masalah tersebut dalam beberapa hari ke depan. Rencananya termasuk pengerjaan ulang parser JSON atau mengintegrasikan parser siap pakai dalam bahasa shell - JSON.sh.

Sumber: opennet.ru

Tambah komentar