找到了 LetsEncrypt 之外的 ACME 伺服器脫水問題的原因

塞巴斯蒂安·克勞斯 決定 與服務奇怪的不相容的根源 繞行 腳本 脫水,用於使用 ACME 協定自動接收 TLS 憑證。 參考客戶端和 uacme 都可以使用 Bypass,但不能脫水(更準確地說,它也可以使用一些解決方法,但僅限於 dns-1 模式)。

事實證明,原因很簡單:脫水的作者並沒有真正解析 JSON 格式的回應,而是使用了 Let's Encrypt 服務的特定 JSON 輸出的格式化功能,並使用正規表示式對其進行解析。 但是 Bypass 回傳的不是格式精美的,而是縮小的 JSON,並且使用了 正規表示式 不工作。 這種方法並不排除如果該服務將來在沒有警告的情況下更改發行格式,同時完全保持在官方協議的框架內,那麼 LetsEncrypt 會出現問題。

在討論該問題時,建議使用外部 JSON 解析器,例如 json_ppjq (將 'jq -r ".authorizations | .[]"' 新增至管道以進行正確解析)。
這種方法的缺點是淡化了使用最少且易於驗證的手段的想法,以及錯誤處理方面的問題。

脫水計畫作者(該計畫最近 售罄 阿皮萊爾有限公司) 同意,解析 JSON 是一個大問題,但他不認為添加外部解析器是一個好主意,因為腳本的關鍵優點之一是缺乏與外部依賴項的綁定。 他目前很忙,但希望在接下來的幾天裡集中精力解決問題。 這些計劃包括重新設計 JSON 解析器或在 shell 語言中整合現成的解析器 - JSON.sh.

來源: opennet.ru

添加評論