طريقان لتغطية أكثر من اسم. فالبدلُ يغطّي كلَّ ما في مستوًى واحد، وشهادةُ SAN تسرد أسماءً بعينها. وكلفتُهما في التشغيل واحدة مع Let's Encrypt، والفارقُ فارقٌ تشغيليّ.
SAN — قائمةُ أسماء
sudo certbot --nginx -d example.com -d www.example.com -d shop.example.com
- تعمل بالتحقّق عبر HTTP — بلا حاجةٍ إلى واجهة DNS برمجيّة.
- والنطاقُ الفرعيّ الجديد يعني إعادةَ إصدار، وهي أمرٌ واحد.
- والشهادةُ تنشر قائمةَ الأسماء، فكلُّ نطاقٍ فرعيٍّ عندك معلَن.
البدل — كلُّ ما في مستوًى واحد
sudo certbot certonly --manual --preferred-challenges dns \
-d example.com -d '*.example.com'
- يغطّي أيَّ نطاقٍ فرعيّ، ومنه ما لم يوجد بعد.
- يشترط التحقّق عبر DNS — فالتجديدُ يحتاج وصولًا برمجيًّا إلى مزوّد DNS عندك، أو إنسانًا حاضرًا كلّ ستّين يومًا.
- ويغطّي مستوًى واحدًا فقط: فـ*.example.com لا يغطّي a.b.example.com.
- ولا يغطّي النطاقَ المجرَّد — فاسرد example.com أيضًا كما سبق.
والفارقُ الأمنيّ هو الفيصل
فمفتاحُ البدل صالحٌ لكلّ نطاقٍ فرعيّ. ضعه على خمسة خوادم، فاختراقُ أيٍّ منها يعطي المهاجمَ شهادةً لها جميعًا، ومنها نطاقُ الدفع. وشهادةُ SAN لكلّ خادم تُبقي دائرةَ الانفجار ضيّقة.
وما الذي تختاره
- حفنةُ نطاقاتٍ فرعيّة على خادمٍ واحد — SAN. تحقُّقٌ أبسط وتجديدٌ أبسط.
- نطاقاتٌ فرعيّة كثيرة، أو مولَّدةٌ لكلّ عميل — بدل، مع تحقُّقٍ آليٍّ عبر DNS.
- نطاقاتٌ فرعيّة على خوادم مختلفة — شهادةٌ مستقلّة لكلٍّ منها، مهما كان العدد.
sudo certbot certonly --dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cf.ini \
-d example.com -d '*.example.com'
وأتمِته في الحالين. فتحدّي DNS اليدويّ كلّ ستّين يومًا تجديدٌ سيفوت يومًا ما — انظر النطاقات الفرعيّة بالبدل.