НайдСна ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ dehydrated с ACME-сСрвСрами, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ LetsEncrypt

Sebastian Krause ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» источник странной нСсовмСстимости с сСрвисом Bypass скрипта dehydrated, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ получСния TLS-сСртификатов ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ ACME. Π‘ Bypass Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ эталонный ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΈ uacme, Π½ΠΎ Π½Π΅ dehydrated (Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΌΠ°Π½Ρ‘Π²Ρ€Π°ΠΌΠΈ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π», Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ dns-1).

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° оказалась банальна: вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON ΠΏΠΎ настоящСму, Π°Π²Ρ‚ΠΎΡ€ dehydrated использовал ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ форматирования ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ JSON-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΡ‚ сСрвиса Let’s Encrypt ΠΈ выполнял Ρ€Π°Π·Π±ΠΎΡ€ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ рСгулярного выраТСния. Но Bypass Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ красиво ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, Π° ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ JSON, ΠΈ использованноС рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ сработало. Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ возникновСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ с LetsEncrypt, Ссли Π΄Π°Π½Π½Ρ‹ΠΉ сСрвис Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π±Π΅Π· прСдупрСТдСния помСняСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π΄Π°Ρ‡ΠΈ, ΠΎΡΡ‚Π°Π²ΡˆΠΈΡΡŒ ΠΏΡ€ΠΈ этом Π²ΠΏΠΎΠ»Π½Π΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°.

ΠŸΡ€ΠΈ обсуТдСнии ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшний парсСр JSON, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ json_pp ΠΈΠ»ΠΈ jq (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² pipe ‘jq -r «.authorizations | .[]»‘ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π±ΠΎΡ€Π°).
НСдостатком Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° являСтся Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π»Π΅Π³ΠΊΠΎ Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ срСдствами, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ошибок.

Автор ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° dehydrated (ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅Π΄Π°Π²Π½ΠΎ Π±Ρ‹Π» ΠΏΡ€ΠΎΠ΄Π°Π½ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Apilayer GmbH) согласился, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π±ΠΎΡ€ JSON являСтся большой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ внСшниС парсСры ΠΎΠ½ Π½Π΅ считаСт Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… достоинств скрипта являСтся отсутствиС привязки ΠΊ внСшним зависимостям. Π’ настоящСС врСмя ΠΎΠ½ занят, Π½ΠΎ надССтся Π² блиТайшиС нСсколько Π΄Π½Π΅ΠΉ ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ ΠΏΠ»Π°Π½Π°Ρ… ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π° ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° парсСра JSON ΠΈΠ»ΠΈ интСграция Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ парсСра Π½Π° языкС shell — JSON.sh.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru