آموزش ها-هاست نگار

نحوه رفع خطاهای رایج LetsEncrypt

 

هنگام پیکربندی نام دامنه یا پشتیبانی HTTPS ممکن است با خطاهای رایج زیادی مواجه شوید. Domain Name System یا بطور مخفف DNS، برای عیب‌یابی می‌تواند چالش‌برانگیز باشد، و به‌طور قطعی نسبت دادن خطاها به DNS در زمانی که خطا میتواند از قسمت های دیگر نیز باشد، دشوار است.
رایج ترین زمان برای مواجهه با مشکلات DNS زمانی است که سعی می کنید پشتیبانی SSL/HTTPS را برای سرورهای خود پیکربندی کنید. به عنوان مثال، هنگام استفاده از Let’s Encrypt.
این آموزش برخی از خطاهای رایجی را که ممکن است هنگام برخورد با DNS، HTTPS یا Let’s Encrypt به طور خاص با آنها مواجه شوید، مرور می کند. این توصیه‌ها اگر از هر ارائه‌دهنده هاست دیگری استفاده کنید، اعمال خواهند شد.
 
رکوردهای DNS
DNS سیستمی است که با استفاده از نام های دامنه مانند your_domain.com به جای نیاز به استفاده از آدرس های IP در همه جا، ترافیک را به سرورهای وب اختصاص داده و هدایت می کند. همه ثبت‌کننده‌های دامنه رابط خود را برای مدیریت رکوردهای DNS ارائه می‌کنند، اگرچه از نحو و قوانین مشابهی در سراسر تخته استفاده می‌کنند.
رایج ترین رکورد DNS یک A record است که یک پیوند اولیه از نام دامنه به آدرس سرور است. برای این آموزش و برای تخصیص نام های دامنه متعارف به آدرس های IP سرور، بیشتر با A records سروکار دارید.
 
به روز رسانی یا انتقال سوابق DNS
اعمال به روز رسانی در DNS ممکن است کمی طول بکشد. معمولاً کمتر از نیم ساعت طول می کشد، اما از آنجایی که نمی توانید بلافاصله پس از ایجاد تغییرات DNS را آزمایش کنید، خطاها می توانند گمراه کننده باشند. شما نمی توانید LetsEncrypt را برای دامنه خود پیکربندی کنید مگر اینکه تغییرات DNS در اکثر یا همه سرورهای جهان منتشر شود.
 
همچنین می توانید از وب سایتی مانند whatsmydns.net استفاده کنید تا بررسی کنید که آیا تغییر DNS در اکثر یا همه name server های جهانی مورد استفاده، برای جستجوهای DNS منتشر شده است یا خیر. ممکن است ISP شما نسبت به برخی از این سرورها در به روز رسانی کندتر باشد، اما در بیشتر موارد فقط چند دقیقه طول می کشد. می‌توانید از دستور nslookup برای آزمایش اینکه DNS شما با DNS جهانی مطابقت پیدا کرده است یا خیر، استفاده کنید:
 
nslookup your-domain.com
 
خطاهای مرورگر و مشکلات پیکربندی HTTPS
گاهی اوقات، ممکن است فکر کنید که HTTPS و DNS خود را به درستی پیکربندی کرده اید، اما شما یا کاربرانتان همچنان هنگام تلاش برای استفاده از وب سایت خود، خطاهایی را در مرورگر خود دریافت خواهید کرد.
بسیاری از این موارد مستقیماً خطاهای HTTPS را نشان نمی دهند، اما همچنان می توانند از پیکربندی های نامناسب ناشی شوند. به عنوان مثال، اگر از پروکسی معکوس Nginx برای ارائه یک گیت وی HTTPS به برنامه دیگری که روی سرور شما اجرا می شود استفاده می کنید و گیت وی به اشتباه پیکربندی شده است، ممکن است خطای 502 دریافت کنید.
 
خطای دیگری که ممکن است با آن مواجه شوید گواهی منقضی (Expire) شده است. برخلاف گواهی‌های تجاری HTTPS، گواهینامه‌های LetsEncrypt فقط به مدت 3 ماه معتبر هستند و عدم تمدید گواهی قبل از تاریخ انقضای آن، برای هر کسی که سعی در دسترسی به وب‌سایت شما را دارد با خطا مواجه می‌شود.
معمولاً این یک خطای ERR_CERT_DATE_INVALID ایجاد می کند. در کروم، ممکن است به شکل زیر باشد:
 
 
هنگامی که در ابتدا LetsEncrypt را پیکربندی می کنید، باید یک فرآیند پس زمینه را برای تمدید خودکار گواهی شما تنظیم کند. LetsEncrypt همچنین معمولاً زمانی که گواهینامه شما در شرف انقضا است، یک ایمیل برای شما ارسال می کند.
 
با این حال، اگر این فرآیند به اشتباه پیکربندی شده باشد، یا فعال نشود، همیشه می‌توانید گواهینامه‌های خود را با اجرای مجدد certbot با آرگومان renew به صورت دستی تمدید کنید:
 
sudo certbot renew --nginx -d example.com -d www.example.com
 
محتوای ترکیبی
اگر در حال انتقال یک stack پیچیده از HTTP به HTTPS هستید، ممکن است متوجه شوید که برخی از تصاویر یا بخش های سایت نمایش داده نمی شوند. اگر کنسول برنامه‌نویس مرورگر را باز کنید، این خطاها را به «mixed content» نسبت می‌دهند:
 
 
این به دلیل یک قانون پیش‌فرض وب است که محتوای HTTP نباید در وب‌سایت‌هایی که از طریق HTTPS ارائه می‌شوند گنجانده شود. این خطا می تواند زمانی اتفاق بیفتد که یک سایت محتوا را از دو سرور وب مختلف بارگیری می کند، یا زمانی که یک برنامه وب از پشت گیت وی Nginx ارائه می شود اما ارسال SSL به درستی کار نمی کند.
اگر از Nginx استفاده می‌کنید و ترافیک را به برنامه دیگری که پشت سرور وب خود اجرا می‌شود، هدایت می‌کنید و با هشدار mixed content مواجه می‌شوید، می‌توانید کانفیگ ارسال SSL اضافی را به یک بلوک مکان اضافه کنید:
 
  } /location 
;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
;proxy_set_header X-Real-IP $remote_addr
;proxy_set_header X-Forwarded-Host $host
;proxy_set_header X-Forwarded-Proto https
{
تذکر: مطمئن شوید که هر سایتی که در حال ارائه آن هستید با HTTPS پیکربندی شده است.
فراتر از آن، مطمئن شوید که هر سایتی که در حال ارائه آن هستید با HTTPS پیکربندی شده است. همچنین می توانید به مستندات MDN در مورد خطاهای محتوای مختلط مراجعه کنید.
 
خطا در اجرای اسکریپت Certbot LetsEncrypt
همچنین ممکن است در اجرای خود اسکریپت certbot Let’sEncrypt با خطاهایی روبرو شوید. گاهی اوقات این خطاها خروجی توصیفی دارند که می توانید مستقیماً آنها را دنبال کنید. دیگر خروجی ها ممکن است کمتر واضح باشند. اگر اسکریپت timing out باشد، به احتمال زیاد مشکل فایروال است و می گوید:
 
certbot --nginx -d example.com -d www.example.com
Output
Press Enter to Continue
Waiting for verification…
Cleaning up challenges
Failed authorization procedure. example.com (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://example.com/.well-known/acme-challenge/EWbLNaAWwRZGM1UCqSvbIIxFFaoH09wPUEwVuYucCb0: 93 Timeout during connect (likely firewall problem)
 
معمولاً، timeout به دلیل اتصالی ایجاد می‌شود که اصلاً نمی‌تواند پاسخی دریافت کند، اما تأییدی در این مورد دریافت نمی‌کند، زیرا یک فایروال عمداً تمام ترافیک را حذف می‌کند. قبل از اجرای certbot مطمئن شوید که فایروال شما پورت 80 یا 443 را مسدود نمی کند. برخی از اسناد نشان می دهد که شما فقط به یکی از پورت های 80 یا 443 باز نیاز دارید، اما برای رد هر گونه خطا، باید سعی کنید هر دو را باز کنید. اگر از UFW با Nginx استفاده می کنید، می توانید این کار را با فعال کردن پیکربندی Nginx Full انجام دهید:
 
'sudo ufw allow 'Nginx Full
 
پس از تغییر تنظیمات فایروال خود، certbot را مجدداً اجرا کنید. اگر certbot را چندین بار متوالی مجدداً اجرا کنید و خطا بدهد، ممکن است یک پیام "failed validation limit" مانند زیر دریافت کنید:
 
/too many failed authorizations recently: see https://letsencrypt.org/docs/failed-validation-limit
 
در این موارد باید تا یک ساعت صبر کنید تا حساب شما دیگر با نرخ محدود نباشد.
اگر خطاهای certbot دیگری دریافت می‌کنید که شامل DNS، timeouts یا مشکلات اتصال نمی‌شود، احتمالاً این خطاها مربوط به محیط پایتون در سرور شما است که در وهله اول توسط certbot برای اجرا پیکربندی شده است. این مشکلات تقریباً همیشه با حذف certbot و نصب مجدد از ابتدا قابل حل است.
 
در این آموزش طریقه رفع خطاهای رایج LetsEncrypt را توضیح دادیم. امیدواریم این مقاله آموزشی برای شما مفید بوده باشد، برای دیدن باقی آموزش ها میتوانید وارد منوی پشتیبانی بخش آموزش ها شوید، در صورتی که درباره این آموزش به مشکل یا سوالی برخورد کردید، میتوانید آن را در بخش دیدگاه بیان کنید.
 
 
 
 
 
 
 

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید

خرید هاست

 

آموزش های مرتبط