LetsEncrypt dışındaki ACME sunucularındaki su kaybı sorunlarının nedeni bulundu

Sebastián Krause tanımlanmış hizmetle garip uyumsuzluğun kaynağı Bypass senaryo susuzACME protokolünü kullanarak TLS sertifikalarının alınmasını otomatikleştirmek için kullanılır. Hem referans istemcisi hem de uacme, Bypass ile çalışır, ancak susuz kalmaz (daha doğrusu, bazı geçici çözümlerle de çalıştı, ancak yalnızca dns-1 modunda çalıştı).

Sebebin önemsiz olduğu ortaya çıktı: Yanıtı gerçek anlamda JSON formatında ayrıştırmak yerine, dehidrated'in yazarı Let's Encrypt hizmetinden belirli bir JSON çıktısının biçimlendirme özelliğini kullandı ve onu normal bir ifade kullanarak ayrıştırdı. Ancak Bypass, güzel biçimlendirilmiş değil, küçültülmüş JSON'u ve kullanılan JSON'u döndürür. Düzenli ifade işe yaramadı. Bu yaklaşım, LetsEncrypt'in tamamen resmi protokol çerçevesinde kalarak gelecekte yayın formatını uyarı vermeden değiştirmesi durumunda ortaya çıkabilecek sorunları dışlamaz.

Sorunu tartışırken aşağıdaki gibi harici bir JSON ayrıştırıcı kullanılması önerildi: json_pp veya jq (doğru ayrıştırma için kanala 'jq -r ".authorizations | .[]"' ekleyin).
Bu yaklaşımın dezavantajı, minimal ve kolayca doğrulanabilir araçların kullanılması fikrinin sulandırılmasının yanı sıra hata işlemeyle ilgili problemlerdir.

Susuzlaştırılmış projenin yazarı (proje yakın zamanda продан Apilayer GmbH) Ben kabul ettiJSON'u ayrıştırmanın büyük bir sorun olduğunu ancak harici ayrıştırıcılar eklemenin iyi bir fikir olduğunu düşünmüyor çünkü betiğin en önemli avantajlarından biri dış bağımlılıklara bağlanma eksikliğidir. Şu anda meşgul ancak önümüzdeki birkaç gün içinde dikkatini sorunun çözümüne ayırmayı umuyor. Planlar arasında JSON ayrıştırıcısının yeniden işlenmesi veya hazır bir ayrıştırıcının kabuk diline entegre edilmesi yer alıyor. JSON.sh.

Kaynak: opennet.ru

Yorum ekle