لدينا مشكلة في تجديد شهادة SSL باستخدام certbot. لدينا العديد من المواقع تحت /etc/nginx/sites-available/.
لدينا كتلة الموقع هذه للدليل .well-known
location ~ /\\.well-known {
auth_basic off;
root /etc/letsencrypt;
allow all;
}
ولدينا تكوينات تجديد لكل موقع تحت دليل /etc/letsencrypt/renewal.
هذا مثال لأحدها.
#renew_before_expiry = 30 days
version = 2.7.4
archive_dir = /etc/letsencrypt/archive/redacted.com
cert = /etc/letsencrypt/live/redacted.com/cert.pem
privkey = /etc/letsencrypt/live/redacted.com/privkey.pem
chain = /etc/letsencrypt/live/redacted.com/chain.pem
fullchain = /etc/letsencrypt/live/redacted.com/fullchain.pem
#Options used in the renewal process
[renewalparams]
allow_subset_of_names = True
account = 670273d7a9a89f2d3494cf6e38739b1c
rsa_key_size = 4096
post_hook = /bin/systemctl reload nginx
authenticator = webroot
webroot_path = /etc/letsencrypt,
server = https://acme-v02.api.letsencrypt.org/directory
key_type = rsa
[[webroot_map]]
redacted.com = /etc/letsencrypt
إصدار certbot لدينا هو 2.7.4، لقد قمنا بالترقية من 1.32.0 ولم يعمل أيضًا.
نحن نعلم أن مشكلتنا تتعلق بـ ip6tables ولكن لدينا بالفعل قواعد ACCEPT للمنافذ 443 و 80.
عندما نحاول الوصول إلى ملفات acme-challenge أثناء certbot renew --dry-run، يمكننا الوصول إلى الملفات بنجاح. لذلك لا ينبغي أن تكون المنافذ 80 و 443 هي المشكلة.
عندما نغير فلتر ip6tables INPUT من DROP إلى ACCEPT، يمكن لجميع المواقع التجديد، ولكن عندما نستخدم فلتر INPUT DROP، تفشل معظم المواقع في التجديد مع هذا الخطأ.
فشل Certbot في المصادقة على بعض النطاقات (المصادق: webroot). أبلغت سلطة الشهادات عن هذه المشاكل:
النطاق: redacted.com
النوع: connection
التفاصيل: xxx.xxx.xxx.xxx: Fetching https://redacted.com/.well-known/acme-challenge/EIJFF3UFqtZJCZtG_Kv9Ca7BGA5LiuBdb9JIWxXIhVg: Timeout during connect (likely firewall problem)
لقد جربنا بالفعل مع الحد الأدنى من القواعد وحاولنا إضافة قواعد ACCEPT للمنافذ 80 و 443 فوق سلسلة الإدخال ولكنها لم تعمل أيضًا. لذلك نحن عالقون هنا.
يمكن العثور على مثال لتكوين nginx في الأسطر التالية.
server {
listen [::]:80;
server_name .redacted.com;
return 301 https://redacted.com$request_uri;
}
server {
listen [::]:443 ssl http2;
server_name redacted.com;
access_log /var/www/log/access/redacted.access.log main buffer=32k;
error_log /var/www/log/error/redacted.com.error.log notice;
limit_conn gulag 200;
root /var/www/web/redacted.com/web;
index index.php;
ssl_certificate /etc/letsencrypt/live/redacted.com/fullchain.pem;
ssl_trusted_certificate /etc/letsencrypt/live/redacted.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/redacted.com/privkey.pem;
include ssl_params;
## Standard site protection
include snippets/standard.conf;
location ~ /\\.well-known {
auth_basic off;
root /etc/letsencrypt;
allow all;
}
## Deny illegal Host headers
if ($host !~* ^(redacted.com|redacted.com)$ ) {
return 444;
break;
}
## Drupal configuration
include snippets/drupal7-php7.4.conf;
## php handling
include snippets/php7.4.conf;
}
بالمناسبة، يمكننا رؤية رموز HTTP 200 في سجلات nginx لملفات acme أثناء تجديد certbot.