LetsEncrypt 以外の ACME サーバーでのデハイドレート問題の原因が判明しました

セバスチャン・クラウス 決定した サービスとの奇妙な非互換性の原因 希釈水 脚本 脱水された、ACME プロトコルを使用して TLS 証明書の受信を自動化するために使用されます。 リファレンス クライアントと uacme はどちらも Bypass で動作しますが、デハイドレートされません (より正確には、いくつかの回避策でも動作しましたが、DNS-1 モードのみで動作しました)。

理由は簡単であることが判明しました。実際に JSON 形式で応答を解析する代わりに、dewatered の作成者は Let's Encrypt サービスからの特定の JSON 出力の書式設定機能を使用し、正規表現を使用してそれを解析しました。 ただし、Bypass は美しくフォーマットされていないが、縮小された JSON を返します。 正規表現 動作しませんでした。 このアプローチでは、完全に公式プロトコルの枠組み内に留まりながら、このサービスが将来警告なしに発行形式を変更した場合に LetsEncrypt に関する問題が排除されるわけではありません。

この問題について議論する際、次のような外部 JSON パーサーを使用することが提案されました。 json_pp または jq (正しく解析するために、「jq -r ".authorizations | .[]"」をパイプに追加します)。
このアプローチの欠点は、最小限で簡単に検証可能な手段を使用するという考えが希薄になることと、エラー処理の問題が発生することです。

脱水プロジェクトの著者 (このプロジェクトは最近 売り切れ アピレイヤー社) 同意した氏は、JSON の解析が大きな問題であると述べていますが、スクリプトの重要な利点の XNUMX つは外部の依存関係にバインドされないことであるため、外部パーサーを追加することは良い考えではないと考えています。 彼は現在多忙ですが、数日以内に問題の解決に専念したいと考えています。 計画には、JSON パーサーを再加工するか、既製のパーサーをシェル言語に統合することが含まれています。 JSON.sh.

出所: オープンネット.ru

コメントを追加します