Certbot: كيف يمكنني تمكين ACMEv2 واسترجاع شهادات أحرف البدل؟

تم إنشاؤها على ١٣ مارس ٢٠١٨  ·  30تعليقات  ·  مصدر: certbot/certbot

إذا كنت تواجه مشكلة في استخدام Certbot ولست متأكدًا من العثور على خطأ أو ملف
طلب ميزة جديدة ، يرجى أولاً محاولة طلب المساعدة على
https://community.letsencrypt.org/. هناك مجتمع أكبر بكثير هناك
الأشخاص المطلعين على المشروع والذين سيكونون قادرين على الإجابة بسرعة أكبر على
أسئلة.

نظام التشغيل الخاص بي (يشمل الإصدار):

خادم أوبونتو 16.04.

لقد قمت بتثبيت Certbot مع (certbot-auto ، مدير حزمة نظام التشغيل ، النقطة ، إلخ):

إصداران: حزمة Plesk ، حزمة certbot من certbot repo.
إصدار حزمة Certbot: 0.21.1

قمت بتشغيل هذا الأمر وأنتج هذا الناتج:

في: certbot -d *.works.wtf certonly
الخارج: Wildcard domains are not supported: *.works.wtf

اختلف سلوك Certbot عما كنت أتوقعه للأسباب التالية:

يقول موقع LetsEncrypt إن Certbot متوافق الآن مع واجهة برمجة تطبيقات ACMEv2.

فيما يلي سجل Certbot يوضح المشكلة (إن وجد):

يتم تخزين السجلات افتراضيًا في /var/log/letsencrypt . لا تتردد في تنقيح المجالات والبريد الإلكتروني وعناوين IP كما تراه مناسبًا.

فيما يلي كتلة خادم nginx ذات الصلة أو مضيف Apache الظاهري للمجال الذي أقوم بتكوينه:

غير متاح ، بالتأكيد

التعليق الأكثر فائدة

نعم ، يمكنك استخدام certbot من المصادر

root<strong i="6">@cs12</strong>:~# git clone https://github.com/certbot/certbot
...
root<strong i="7">@cs12</strong>:~# DOMAIN=example.com
root<strong i="8">@cs12</strong>:~# cd certbot 
root<strong i="9">@cs12</strong>:~/certbot# ./certbot-auto certonly --manual -d *.$DOMAIN -d $DOMAIN --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
...
-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:

qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI

Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue

أضف سجل TXT ، اضغط على Enter. سوف تحصل على سجل واحد آخر. أضفه أيضًا.

ثم تحقق في نافذة المحطة الثانية إذا تم نشر السجلات:

root<strong i="15">@cs12</strong>:~# host -t txt _acme-challenge.example.com
_acme-challenge.example.com descriptive text "qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI"
_acme-challenge.example.com descriptive text "oMmMa-fDLlebdUhvhMD5MinJ2EeFpdP0F9lUPTShh4w"

إذا كان كل شيء على ما يرام ، فارجع واضغط على Enter

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2018-06-11. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

تحديث: راجع الدليل الكامل

ال 30 كومينتر

يجب عليك استخدام تحدي DNS-01 . مما يعني أنه يجب أن يكون لديك طريقة لتعديل ونشر وتحديث منطقة DNS من خادمك.

هل يمكن أن تخبرني من فضلك بعلم هذا؟

إنه ليس مجرد علم ، ولكن كل شيء متاح في المستند. إنها بعض المكونات الإضافية للعديد من مزودي نظام أسماء النطاقات المدرجين هناك ، إذا لم تكن موفرًا لك ، فيمكنك فتح طلب ميزة هنا لطلب الدعم لها (هناك بالفعل بعض الإضافات المفتوحة لأشياء مثل Gandi على سبيل المثال ، لذا تأكد من استخدام البحث قبل فتح جديد).

همهمة لا ، أنت بحاجة إلى certbot >= 0.22 في الواقع ، آسف لأنك فاتتك ذلك في مشاركتك الأولى.

حسنا .... كيف يمكنني الشروع في تثبيت ذلك؟ هل يجب علي التحويل من المصدر؟

يمكنك إما انتظار نشره في اتفاقية شراء الطاقة ، أو التثبيت عبر نقطة أو شيء مشابه ، أو البناء من المصدر بالفعل.

هل سأكون أنت ، أفضل الانتظار حتى يتم تحديث الحزمة الرسمية. سيتيح لك ذلك بعض الوقت للنظر في إعداد تحدي DNS بشكل صحيح ، والذي يمكنك تجربته بالفعل بدون حرف بدل فقط للتحقق من أن كل شيء يعمل ، وبعد ذلك عندما يكون التحديث متاحًا (والذي لن يستغرق وقتًا طويلاً) ، ستكون جاهزًا لذلك الحصول على شهادة البدل الخاصة بك.

نعم ، يمكنك استخدام certbot من المصادر

root<strong i="6">@cs12</strong>:~# git clone https://github.com/certbot/certbot
...
root<strong i="7">@cs12</strong>:~# DOMAIN=example.com
root<strong i="8">@cs12</strong>:~# cd certbot 
root<strong i="9">@cs12</strong>:~/certbot# ./certbot-auto certonly --manual -d *.$DOMAIN -d $DOMAIN --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
...
-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:

qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI

Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue

أضف سجل TXT ، اضغط على Enter. سوف تحصل على سجل واحد آخر. أضفه أيضًا.

ثم تحقق في نافذة المحطة الثانية إذا تم نشر السجلات:

root<strong i="15">@cs12</strong>:~# host -t txt _acme-challenge.example.com
_acme-challenge.example.com descriptive text "qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI"
_acme-challenge.example.com descriptive text "oMmMa-fDLlebdUhvhMD5MinJ2EeFpdP0F9lUPTShh4w"

إذا كان كل شيء على ما يرام ، فارجع واضغط على Enter

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2018-06-11. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

تحديث: راجع الدليل الكامل

شكرًا للإجابة الدقيقةArchangeGabriel! نحن نعمل على تحديث حزمنا لـ Ubuntu ، ونأمل أن يتم طرحها قريبًا.

ohemorange على الرحب والسعة! بصراحة ، كنت أخشى أن نرى تدفقًا من الأشخاص الذين يحاولون الحصول على شهادات البدل دون أن يكون لديهم رؤى حول ماهية تحدي DNS-01 ، ولكن من الواضح أنه لم يحدث (حتى الآن على الأقل).

لطيفة talyguryn ، كمتابعة على talyguryn

عند إنشاء شهادة واحدة على القمة باستخدام حرف البدل ، ستحصل على __two__ تحديين ..

باستخدام -d "example.com, *.example.com" _ أعطني شهادة على القمة وحرف بدل على القمة_

سيتم الطعن عليك _ مرتين_ ، مرة واحدة مقابل example.com ومرة أخرى مقابل *.example.com

لذلك لا تعتقد أن التحدي الثاني قد فشل .. وتحتاج إلى تغيير القيمة. فقط أضف التحدي الإضافي لنظام أسماء النطاقات. انتظر التكاثر واستمر ،

ربما يجب تغيير الإخراج بحيث يكون من الأسهل معرفة المجال الذي تم الطعن فيه؟

AubreyHewes ، لدي نفس المشكلة. لست متأكدًا من كيفية إصدار شهادة واحدة لكل من example.com و *.example.com . لسوء الحظ ، يتطلب certbot أن أقوم بتعديل سجل TXT مرتين. يؤدي هذا إلى فشل التحقق من الصحة لأحد المجالات. هل هناك طريقة للتغلب على ذلك؟

@ nathan-alden تحتاج إلى تعيين كلا السجلين TXT في نفس الوقت. لا تحذف الأول عند إضافة الثاني.

@ nathan-alden
لديك تحديان .. هذا _seems_ مثل certbot يريد منك تعديل TXT نفسه مرة أخرى. لكن القيمة الثانية هي للمجال الثاني ، لذا أضف سجل TXT جديدًا للمجال الثاني.

بمعنى آخر
إذا كنت تستخدم -d "example.com,*.example.com" فإن التحدي الأول هو example.com لذا أضف TXT لهذا الغرض. تستمر بعد التكاثر.
التحدي الثاني هو *.example.com لذا أضف TXT لهذا الغرض. تستمر بعد التكاثر.

كانت لدي تجربة جيدة في استخدام إصدار عامل ميناء. كملاحظة جانبية ، تأكد من تعيين TTL لإدخال TXT على ما يشبه دقيقة واحدة حتى لا تضطر إلى الانتظار لمدة ساعة حتى يتم نشر الإدخال الثاني.

docker run -it --name certbot \
  -v <certs>:/etc/letsencrypt \
  -v <logs>:/var/lib/letsencrypt \
  certbot/certbot certonly --manual \ 
  -d *.<domain.com> -d <domain.com> \
  --agree-tos \
  --manual-public-ip-logging-ok \ 
  --preferred-challenges dns-01 \
  --server https://acme-v02.api.letsencrypt.org/directory

أتساءل. لماذا نطلب dns-01 . ألا يمكنك فقط إنتاج خادم على المنفذ 80 (أي شكل من أشكال التحدي http ) والتحقق من أنني أمتلك مجال أحرف البدل عن طريق إنشاء نطاقات فرعية عشوائية والاتصال؟

AubreyHewes ، اكتشفت أنك بحاجة إلى تحدي / سجل واحد فقط في DNS - فقط عليك تخمين الرقم الصحيح.

لدي شهادة واحدة لأربعة نطاقات مع أحرف البدل الخاصة بهم. يحتوي كل مجال على TXT _acme-Challenge واحد فقط. إنه غير متسق إلى حد كبير حيث تعمل ثلاثة مجالات مع التحدي الأول في إخراج certbot ويبدو أن القيم هي نفسها في كل مرة أقوم بتشغيلها.

لا يعمل المجال الرابع مع السجل الأول في الإخراج ولكنه يعمل مع السجل الثاني ويبدو أن هذا النطاق يتغير في كل مرة أقوم فيها بتشغيل certbot.

أستخدم هذا الأمر:

/usr/bin/certbot --renew-by-default certonly --manual --server https://acme-v02.api.letsencrypt.org/directory --preferred-challenges dns-01 -w /usr/share/nginx/letsencrypt-root/ -d *.domain1.sk -d domain1.sk -d *.domain2.sk -d domain2.sk -d *.domain3.sk -d domain3.sk -d *.domain4.sk -d domain4.sk

لقد فعلت ذلك عن طريق التجربة والخطأ - لم أكن أعلم أنه يمكنك الحصول على سجلي DNS متشابهين بقيم مختلفة :-) المرة القادمة التي سأحاول فيها ذلك.

robertvalik لا يمكن استخدام نفس قيمة السجل TXT لعمليات التحقق المختلفة ، بما في ذلك example.com و *.example.com .

يسمح Let's Encrypt بإعادة استخدام التفويض لفترة من الوقت ، حاليًا 30 يومًا. إذا قام حسابك بالتحقق من صحة شيء ما مؤخرًا ، فيمكنه إصدار المزيد من الشهادات دون التحقق مرة أخرى. ومع ذلك ، بسبب قيود Certbot (# 5342) ، يطلب منك Certbot تعيين نفس السجل TXT مرة أخرى ، على الرغم من أنه لن يتم التحقق منه مرة أخرى.

لذا ما يجب أن يحدث هو أنه كان هناك بالفعل تصريح صالح لأحد الأسماء ، لذا فإن حقيقة أن سجل DNS الضروري لم يعد موجودًا لم يعد مهمًا.

@ francoism90 قد يرغب المرء في مجال أحرف البدل لعدة أسباب ، يمكن أن يخدم المرء نطاقات فرعية ثابتة قليلة ، بينما يخدم الآخر نطاقات فرعية يحتمل أن تكون غير محدودة (مثل البرامج كخدمة). في الحالة الأخيرة (حالتي) ، يوجد بالفعل حرف بدل في ملف DNS ، وفي الواقع يجب حل أي مجال فرعي عشوائي بشكل صحيح. إنني أتساءل عما إذا كان يمكن توفير شكل من أشكال تحدي http لهذا السيناريو. شكرا لكل عملك الشاق!

لقد نجحت في إنشاء الشهادة عن طريق الإصدار

./certbot-auto certonly --manual -d *.example.com -d example.com --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

الآن أنا فقط أتساءل كيف يمكنني تجديد الشهادات

<> certbot renew
<> certbot-renew
<> certbot-auto renew

أنا في حيرة من أمري ، لقد جربت ./certbot-auto renew لأنني استخدمت نفس الأمر عند الطلب ، لكني أريد فقط التأكد مما إذا كانت الطريقة الصحيحة.

هل يمكننا أتمتة شهادة البدل؟

@ ufo911 بالطبع. على سبيل المثال ، باستخدام المكون الإضافي RFC 2136 من Certbot:

certbot certonly \
  --dns-rfc2136 \
  --dns-rfc2136-credentials ~/.secrets/certbot/rfc2136.ini \
  --server https://acme-v02.api.letsencrypt.org/directory \
  -d example.com \
  -d "*.example.com"

أو ربط المصادقة اليدوي acme-dns :

certbot certonly \
  --debug-challenges \
  --manual \
  --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py \
  --server https://acme-v02.api.letsencrypt.org/directory \
  -d example.com \
  -d "*.example.com"

https://certbot.eff.org/docs/using.html
https://community.letsencrypt.org/t/getting-wildcard-certificates-with-certbot/56285

إذا كنت بحاجة إلى مساعدة ، يمكنك نشر موضوع في منتدى Let's Encrypt .

تضمين التغريدة
هل من الضروري أن يكون سجل DNS TXT مباشرًا عند كل تجديد؟

@ ufo911 بالطبع ، التجديد هو مجرد طلب شهادة لإعادة استخدام المعلمات السابقة.

ArchangeGabriel Stange يخبرني أنه يخبرني أن أقوم بتعيين سجلات TXT جديدة:

#!/bin/bash
certbot certonly \
  --manual \
  --agree-tos \
  --manual-public-ip-logging-ok \
  --preferred-challenges dns-01 \
  --server https://acme-v02.api.letsencrypt.org/directory \
  -d domain.tld \
  -d "*.domain.tld"

هل هذا طبيعي؟ لماذا يتم إنشاء رموز جديدة؟

آسف إذا لم أكن واضحًا ، نعم ، هناك سجل TXT جديد في كل طلب. لأن هذا هو التحقق من صحة التحدي والاستجابة ، وإعادة استخدام التحدي سيكون فكرة سيئة للغاية.

لذلك يمكنك في الواقع إزالة سجل TXT بمجرد حصولك على الشهادة ، ولكن هناك سجل TXT جديد للنشر (وإزالته بمجرد نجاحه) في كل مرة تقوم فيها بالتجديد.

ArchangeGabriel هممم ، لا أعتقد أن هذا خيار بالنسبة لي. قد يستغرق إنشاء سجلات TXT جديدة 24 ساعة حتى يكتمل ، وإذا حدث خطأ ما ، فسوف ينتهي بك الأمر مع الكثير من الوقت الضائع.

سأستخدم الطريقة العامة بدلاً من ذلك. :)

بالتأكيد ، تحدي DNS ليس التحدي الأسهل. لكن بالنسبة إلى أحرف البدل ، لا توجد إمكانية أخرى ، على الأقل حاليًا. لا أعرف ما إذا كان يمكن استبدال هذا على سبيل المثال بإرسال التحدي إلى اسم نطاق فرعي عشوائي في مساحة أحرف البدل (على سبيل المثال ، إذا طلبت *.domain.com ، فستحاول قراءة استجابة التحدي على somerandomstring.domain.com للتحقق من أنك تتحكم بالفعل في مساحة *.domain.com بالكامل). بهذه الطريقة سيكون وجود إعادة توجيه أحرف البدل في DNS كافيًا.

ArchangeGabriel سيكون هذا خيارًا جيدًا ، ولكن هل ستظل هناك حاجة إلى التحقق من DNS في هذه الحالة؟ هل يقدم شيئًا مطلوبًا لإعداد حرف بدل آمن؟

لا ، ستكون فكرتي هي تقديم بديل لتحدي DNS.

لإعداد أحرف البدل ، تحتاج إلى إثبات السيطرة على جميع المجالات الفرعية. الطريقة الوحيدة الواضحة للقيام بذلك هي إثبات الملكية الفنية لمنطقة DNS المقابلة.

الآن أتساءل عما إذا كان يمكن أن يكون هناك طريقة أخرى مثل أنواع التحديات الأخرى. سيثبت طلب النطاق الفرعي العشوائي أنك تتحكم في إعادة توجيه حرف البدل. لا أعرف ما إذا كان ذلك سيكون كافيًا لـ IETF ، أعتقد أنهم فكروا في الأمر ويجب أن تكون هناك بعض المشكلات.

على سبيل المثال ، أتساءل عما إذا كانت هذه الحالة ممكنة:
- يشير somespecificsub.domain.com إلى عنوان IP معين ؛
- يشير النطاق * .domain.com و domain.com إلى عنوان IP آخر.

في هذه الحالة ، يمكنك الرد على طلبات المجال الرئيسي وأي مجال فرعي باستثناء somespecificsub.domain.com. وأعتقد أنه لن يكون من الصواب تسليمك شهادة * .domain.com. لذلك إذا كان ذلك ممكنًا ، فسنحتاج إلى بعض الإعدادات الإضافية. مثل سجل TXT الدائم الذي يخبرنا أنه مصرح له بإجراء تحقق عشوائي من النطاق الفرعي لاستجابة تحدي أحرف البدل. بهذه الطريقة سيكون تكوين DNS مجرد إطلاق نار وانسى ، ويمكنك بسهولة التحقق من صحة حرف البدل.

على أي حال ، لا أعرف مع من يجب مناقشة ذلك وفي أي نقطة نظروا في هذا الإعداد ، ولا ما هو المعيار المطلوب بالضبط لتسليم حرف البدل بشكل آمن. أعتقد أنني يجب أن أقرأ RFC فقط لذلك ، لكن ليس لدي وقت لهذا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات