وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

خطای گواهی curl در سرور؛ چطور بدون خاموش کردن امنیت آن را رفع کنیم؟

خطای 60 در curl را با بررسی نام میزبان، زمان، زنجیره گواهی و گواهی‌های مورد اعتماد عیب‌یابی کنید.

انتشار:
توسط تیم فنی نت‌آرام
۳ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله خطای گواهی curl در سرور؛ چطور بدون خاموش کردن امنیت آن را رفع کنیم؟ در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
برنامه سرور شما به یک نشانی HTTPS وصل می‌شود اما پیام certificate verify failed یا خطای 60 در curl می‌بیند. معنایش این است که curl نتوانسته هویت مقصد را با اطلاعات قابل اعتماد خودش تأیید کند. علت می‌تواند نام اشتباه، تاریخ نامعتبر، زنجیره ناقص یا گواهی ریشه ناشناخته باشد.
خروجی نشان‌داده‌شده در تصویر فرضی است؛ برای دیدن خطای واقعی باید نشانی سرویس خودتان را آزمایش کنید.

نشانی درست و پیام دقیق را مشخص کنید

این دستور را با نام دامنه واقعی سرویس اجرا کنید:
کد / دستورcurl -vI https://example.com/
گزینه I فقط سرآیند را درخواست می‌کند و v جزئیات اتصال را نشان می‌دهد. خروجی می‌تواند آدرس یا اطلاعات داخلی داشته باشد؛ قبل از فرستادن به دیگران آن را مرور کنید. اگر خطا هنگام ارتباط برنامه با یک API است، نشانی واقعی همان API را بدون نمایش کلید یا رمز انتخاب کنید.
وصل شدن با IP به جای نام دامنه می‌تواند بررسی نام گواهی را شکست دهد. دامنه‌ای را استفاده کنید که ارائه‌دهنده برای API اعلام کرده و روی گواهی وجود دارد؛ صرف عوض کردن DNS یا تنظیم Host بدون درک TLS نتیجه مطمئن نمی‌دهد.

زمان و زنجیره را جدا بررسی کنید

کد / دستورdate -u timedatectl status
تاریخ UTC را با منبع زمان قابل اعتماد مقایسه کنید. اختلاف منطقه زمانی با اشتباه بودن ساعت واقعی یکی نیست. تغییر ساعت روی سرویس‌های مالی و گزارش‌ها اثر دارد؛ روش اصلاح را با مدیر سیستم هماهنگ کنید.
برای مشاهده گواهی‌ای که سرور ارائه می‌دهد می‌توانید از OpenSSL استفاده کنید:
کد / دستورopenssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null
نام را در هر دو بخش با دامنه واقعی جایگزین کنید. خروجی طولانی است؛ تاریخ اعتبار، نام و وضعیت زنجیره را بررسی کنید. دیدن چند گواهی به تنهایی به معنی معتبر بودن کامل زنجیره نیست. اگر وب‌سرور واسطه گواهی میانی را ارسال نمی‌کند، مدیر همان سرویس باید تنظیم زنجیره را اصلاح کند.

اگر بسته گواهی سیستم قدیمی است

در Ubuntu، پس از اطمینان از سلامت مخزن رسمی و داشتن دسترسی مدیر، بسته گواهی را با دستورهای زیر به‌روز کنید:
کد / دستورsudo apt update sudo apt install --only-upgrade ca-certificates
در AlmaLinux ابزار بسته معمولاً dnf است و فرمان به‌روزرسانی بسته sudo dnf upgrade ca-certificates خواهد بود. پیش از تأیید، خروجی مدیریت بسته را بخوانید و اگر مخزن خود خطای گواهی می‌دهد آن را با روش معتبر توزیع رفع کنید. سپس همان curl را بدون گزینه غیرفعال‌کننده تأیید اجرا کنید. اگر خطا فقط برای یک دامنه مانده، احتمال زنجیره یا نام آن سرور را جدا دنبال کنید؛ نصب بسته CA لزوماً گواهی خراب مقصد را درست نمی‌کند.

گواهی‌های مورد اعتماد سرور را به‌روز کنید

در توزیع‌های مختلف بسته CA و روش نصب تفاوت دارد. از مدیر سیستم بخواهید بسته گواهی‌های ریشه را از مخزن معتبر همان توزیع بررسی و به‌روز کند. در سرویس داخلی با CA خصوصی، فقط گواهی عمومی CA معتبر را از مسیر مطمئن دریافت و مطابق راهنمای سازمان نصب کنید؛ کلید خصوصی را دریافت یا منتشر نکنید.
گزینه insecure یا k بررسی هویت را حذف می‌کند و راه‌حل دائمی نیست. بعد از اصلاح، curl را بدون آن دوباره اجرا کنید و سپس خود برنامه را نیز امتحان کنید. اگر مرورگر موفق است اما سرور نه، تفاوت مخزن CA یا زنجیره را بررسی کنید؛ موفقیت یک ابزار به معنی سلامت همه ابزارها نیست.
اشتراک‌گذاری:
لینکدینتلگرامایکس

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام