یکی از پیغامهای خطای رایج برای دولوپرها، SSL certificate problem unable to get local issuer certificate است. این پیغام در موارد مختلف و هنگامِ استفاده از Git مشاهده میشود. در این مقاله از وب سایت SSL میخواهیم در مورد این پیغام خطا و نحوهی رفع کردن آن صحبت کنیم.
پیغام خطای SSL certificate problem unable to get local issuer certificate
این پیغام خطا یکی از رایجترین پیغامهای خطا برای توسعه دهندگان است. این ارور ممکن است هنگام Push کردن، Pull گرفتن، Clone کردن یک ریپوزیتوری یا مخزن Git با استفاده از Git Bash و یا در هنگام استفاده از خط فرمان مخصوص سیستم عامل ویندوز مشاهده شود.
این پیغام اصولاً در مواردی نشان داده میشود که در سرور Git از یک گواهی SSL خود امضا استفاده شده باشد. مشکل اساسی این نوع از گواهینامهها این است که کلیدهای خصصوی مرتبط با آنها نمیتواند باطل شود و همین موضوع میتواند به یک آسیبپذیری امنیتی تبدیل شود.
دلیل دیگر بروز این پیغام خطا میتواند پیکربندی نادرست Git یا در سیستم شما و یا در هنگام استفاده از Visual Studio Code یا همان VS Code باشد.
علت نمایش SSL certificate problem unable to get local issuer certificate چیست؟
حالا بیایید موضوع را کمی فنیتر دنبال کنیم. همانطور که پیشتر نیز عنوان شد، پیغام unable to get local issuer certificate ممکن بهدلیل پیکربندی اشتباه گواهی SSL بر روی سیستم عامل شما ظاهر شود. در واقع در هنگام Push کردن، Pull گرفتن و یا Clone کردن، Git نمیتواند گواهینامهی SSL شما را تائید کند که همین موضوع میتواند منجر به بروز خطا شود.
بهعنوان توضیح بیشتر، یک Handshake معتبر پروتکل HTTPS هم به کلاینت و هم به سرور نیاز دارد تا بتواند ارتباطی ایمن را بین سیستم لوکال شما و محل هاست کد منبع برقرار کند. حالا وقتی گواهی SSL تأئید نمیشود، Git هم نمیتواند Handshake پروتکل Https را با سروری که ریپوزیتوری یا مخزن را میزبانی میکند برقرار نماید.
از طرف دیگر دریافت این پیغام خطا در VSCode این است که Visual Studio Code نمیتواند گواهی SSL را پیدا کند. این موضوع ممکن است بهدلیل پیکربندی اشتباه مسیر در لوکال ماشین اتفاق افتاده باشد.
چطور میتوان خطای SSL certificate problem unable to get local issuer certificate را رفع کرد؟
تا این قسمت از مقاله در مورد دلایل بروز این پیغام خطا اطلاعاتی را بهدست آوردیم. اما حالا باید برای رفعِ آن چاره اندیشی کنیم. در ادامه چهار روش کاربردی برای انجامِ این کار توضیح داده شده است:
روش اول: اضافه کردن گواهی SSL به یک فروشگاه معتبر
اگر این پیغام خطا بهدلیل استفاه از گواهی خود امضاء ایجاد شده باشد، راهحل رفع مشکل این است که گواهی SSL را به فروشگاهِ گواهی معتبر اضافه نمایید. این فروشگاه بهصورت پیشفرض برای Git Bash در دایرکتوری زیر قرار دارد:
C:\Program Files\Git\mingw64\ssl\certs\
برای انجامِ این کار، فایل ca-bundle.crt را که در فولدر بالا قرار دارد باز کرده و سپس گواهی SSL Git را در انتهای فایل کپی کنید. پس از تکمیل، تغییرات را ذخیره و سپس دستور Push، Pull یا Clone را مجدداً اجرا کنید.
روش دوم: غیرفعال کردن اعتبارسنجی گواهی SSL
اگر چه غیرفعال کردن اعتبارسنجی گواهی SSL و سیستم لوکال بهدلیل مشکلات امنیتی بهصورت کلی توصیه نمیشود، با این حال میتواند در موارد خاص بهکار گرفته شود. برای این منظور میتوانید از دستور زیر استفاده کنید:
$ git -c http.sslVerify=false clone [URL]
همچنین این امکان برای شما وجود دارد که با استفاده از دستورِ زیر، اعتبارسنجی گواهی SSL را در سط Global غیرفعال کنید.
$ git config –global http.sslVerify false
برای فعالسازی مجدد سیستم اعتبارسنجی گواهی SSL، میتواند از دستور زیر استفاده کنید:
$ git config –global http.sslVerify true
روش سوم: نصب مجدد Git و انتخاب SSL Transport Backend
روش بعدی برای رفع این پیغام خطا، نصب مجدد Git و انتخاب گزینهی SSL Transport Backend در طول فرآیند نصب است. اگر پیغام خطای SSL certificate problem unable to get local issuer هنگام استفاده از Visual Studio Code رخ دهد، باید مجوز دسترسی به گواهی SSL را به مخزن خود بدهید. برای انجام این کار باید در قسمت پیکربندی گواهی SSL، گزینهی Global Flag را علامتگذاری نمود. انجام این کار باعث خواهد شد که سرور Git به گواهی SSL دسترسی داشته باشد.
در نظر داشته باشید که دسترسی به گواهی SSL باید در سطح سیستم تنظیم شود. برای این منظور باید ابتدا و با استفاده از دستورِ زیر در حالت Administrator قرار بگیرید:
git config –system http.sslBackend channel
حالا میتوانید با استفاده از دستوری که در پایین درج شده است، امکان دسترسی سرور Git به گواهی SSL را فراهم کنید:
git config –global http.sslBackend channel
همچنین اگر نمایش پیغام خطا مربوط به دسترسی سرور Git به گواهی SSL نیست، این احتمال وجود دارد که دلیلِ آن، پیکربندی نادرست مکان باشد. با استفاده از دستور زیر میتوانید مسیر جدیدی را برای انجامِ این کار تخصیص دهید:
git config –global http.sslcainfo “Path”
چطور از خطای ssl certificate problem unable to get local issuer certificate جلوگیری کنیم؟
اما یکی از سؤالات مهم این است که چطور میتوان از بروز این خطا جلوگیری کرد؟ برای پاسخ به این سؤال باید در نظر داشت که هدف نهایی گواهی SSL احراز هویت است تا با استفاده از آن اطلاعات ارسال شده بین مشتری و سرور، امن باشد. هنگامی که با این خطا روبرو میشوید، با توجه به اینکه امکانِ برقراری یک اتصال ایمن وجود ندارد، تمامی تلاشهای شما برای Push کردن، Pull گرفتن و … از طرف Git رد میشود.
اگر چه غیرفعال کردن گواهی SSL میتواند راهکاری برای این موضوع باشد، اما به هیچ وجه استفاده از آن به دلایل امنیتی توصیه نمیشود. اما برای جلوگیری از این موضوع، همواره باید مطمئن باشید که از یک گواهی معتبر SSL استفاده میکنید. همچنین شما میتوانید Git Bash خود را مجدداً نصب کرده و در طول فرآیند نصب، گزینهی Transport Backend را انتخاب کنید.
جمعبندی
پیغامهای خطای امنیتی یکی از مهمترین موضوعات در دنیای وب هستند. این پیغامها هم میتوانند برای کاربران و هم میتوانند برای توسعه دهندگان وب ایجاد شوند. یکی از مهمترین پیغامهای خطایی که توسعه دهندگان معمولاً با آن برخورد میکنند، پیغام SSL certificate problem unable to get local issuer certificate در Git است. اما این پیغام چیست و چطور میتوان آن را برطرف کرد؟ پاسخ این سؤالات در این مقاله از وب سایت آکادمی SSL توضیح داده شد.