Menemui punca masalah dehidrasi dengan pelayan ACME selain daripada LetsEncrypt

Sebastian Krause ditentukan punca ketidakserasian aneh dengan perkhidmatan Bypass skrip dehidrasi, digunakan untuk mengautomasikan penerimaan sijil TLS menggunakan protokol ACME. Kedua-dua klien rujukan dan uacme berfungsi dengan Bypass, tetapi tidak dehidrasi (lebih tepat, ia juga berfungsi dengan beberapa penyelesaian, tetapi secara eksklusif dalam mod dns-1).

Alasannya ternyata remeh: daripada menghuraikan respons dalam format JSON secara nyata, pengarang dehidrasi menggunakan ciri pemformatan output JSON tertentu daripada perkhidmatan Let's Encrypt dan menghuraikannya menggunakan ungkapan biasa. Tetapi Bypass mengembalikan JSON yang tidak diformat dengan cantik, tetapi diminimumkan, dan yang digunakan ekspresi biasa tidak berjaya. Pendekatan ini tidak mengecualikan masalah dengan LetsEncrypt jika perkhidmatan ini mengubah format pengeluaran pada masa hadapan tanpa amaran, sambil kekal sepenuhnya dalam rangka kerja protokol rasmi.

Apabila membincangkan masalah, dicadangkan untuk menggunakan penghurai JSON luaran seperti json_pp atau jq (tambah 'jq -r ".authorizations | .[]"' pada paip untuk penghuraian yang betul).
Kelemahan pendekatan ini adalah pencairan idea menggunakan cara yang minimum dan mudah disahkan, serta masalah dengan pengendalian ralat.

Pengarang projek dehidrasi (projek itu baru-baru ini habis dijual Apilayer GmbH) bersetuju, bahawa menghuraikan JSON adalah masalah besar, tetapi dia tidak menganggap menambah penghurai luaran sebagai idea yang baik, kerana salah satu kelebihan utama skrip ialah kekurangan pengikatan kepada kebergantungan luaran. Dia kini sibuk, tetapi berharap dapat menumpukan perhatiannya untuk menyelesaikan masalah itu dalam beberapa hari akan datang. Pelan itu termasuk mengolah semula penghurai JSON atau menyepadukan penghurai siap pakai dalam bahasa shell - JSON.sh.

Sumber: opennet.ru

Tambah komen