گواهی SSL چیست؟ SSL مخفف Secure Socket Layer است. گواهیهای SSL هویت وبسایت شما را تأیید کرده و اطلاعاتی که بازدیدکنندگان به سایت شما ارسال میکنند (یا از آن دریافت میکنند) را رمزگذاری میکنند. هنگامی که یک گواهی SSL از وبسایت شما محافظت میکند، مشتریان شما میتوانند مطمئن باشند که اطلاعاتی که در هر صفحه امن وارد میکنند، خصوصی است و توسط کلاهبرداران سایبری قابل مشاهده نیست.
نحوه دریافت گواهی SSL
ابتدا برای پیادهسازی SSL در وبسایت خود، باید یک گواهی SSL از یک ارائهدهنده گواهی SSL، که به عنوان مرجع صدور گواهی (CA) شناخته میشود، دریافت کنید. مراجع صدور گواهی زیادی برای دریافت گواهی SSL برای وبسایت شما وجود دارند، مانند SSL.com، Namecheap یا GoDaddy.
سپس، باید گواهی SSL خریداری شده را روی سرور خود نصب کنید. نحوه انجام این کار به سرور شما بستگی دارد. برای دستورالعملها و توصیههای بیشتر، باید به راهنمای ارائهدهنده گواهی SSL یا مستندات سرور خود مراجعه کنید. در این مقاله، فقط لینکی به راهنمای GoDaddy ارائه میدهم: نصب گواهیهای SSL.
در مرحله آخر، باید فروشگاه nopCommerce خود را در بخش مدیریت تنظیم کنید. برای این کار، به صفحه Configuration → Stores بروید. فروشگاهی که میخواهید تنظیم کنید را انتخاب کرده و روی دکمه Edit در کنار آن کلیک کنید. پنجره Edit store details به صورت زیر نمایش داده خواهد شد:
- آدرس فروشگاه خود را با پیشوند
https://
وارد کنید. - گزینه SSL enabled را انتخاب کنید.
Warning
تا زمانی که گواهی SSL روی سرور نصب نشده است، این گزینه را فعال نکنید.
عیبیابی
پنل مدیریت به دلیل مشکلات گواهی SSL در دسترس نیست
یک مشکل رایج زمانی است که گواهی SSL روی سرور نصب نشده است یا مشکلاتی در پیکربندی SSL وجود دارد. در عین حال، تنظیم SSL enabled در فروشگاه فعال شده است (همانطور که در بخش قبل انجام دادیم).
نسخههای تحت تأثیر: همه نسخهها
راهحل: پرسوجوی SQL زیر را اجرا کنید:
UPDATE [dbo].[Store] SET [SslEnabled] = 'False'
محتوای ترکیبی HTTP و HTTPS
محتوای ترکیبی زمانی اتفاق میافتد که یک سایت تحت پروتکل امن SSL کار میکند، اما برخی از منابع (مثلاً تصاویر) از طریق یک اتصال ناامن HTTP بارگذاری میشوند. این باعث ایجاد خطا در صفحه میشود، زیرا درخواست اصلی از طریق HTTPS ایمن شده است.
هنگام استفاده از یک لود بالانسر، مشکلات مشابهی ممکن است به دلیل این که لود بالانسر با برنامه از طریق HTTP ارتباط برقرار میکند، ایجاد شود.
نسخههای تحت تأثیر: 4.20 و پایینتر
راهحلها:
مطمئن شوید که تنظیم زیر فعال شده است:
securitysettings.forcesslforallpages = true
مطمئن شوید که وبسایت شما روی پورت 443 در سرور میزبان در حال گوش دادن است.
نسخههای تحت تأثیر: همه نسخهها
راهحلها:
فیلد
UseHttpXForwardedProto
در هدر درخواست وجود ندارد. سعی کنید تنظیمUseHttpXForwardedProto
را در فایلappsettings.json
فعال کنید و وبسایت را مجدداً راهاندازی کنید."UseHttpXForwardedProto": true
میتوانید آن را با افزودن دستور CSP "upgrade-insecure-requests" برطرف کنید. این کار را میتوان در فایل
web.config
انجام داد. یا با قرار دادن همان دستور inline در بخش<head>
سند با استفاده از عنصر<meta>
:<meta http-equiv = "Content-Security-Policy" content = "upgrade-insecure-requests">
در صورت استفاده از Cloudflare، بررسی کنید که تنظیم SSL شما در حالت
Full
یاFlexible
باشد. برای این کار به داشبورد Cloudflare خود وارد شوید و روی برنامهSSL/TLS
کلیک کنید تا تنظیمات SSL را بررسی کنید.
حلقه بازگردانی بینهایت (ERR_TOO_MANY_REDIRECTS)
هنگامی که یک کاربر غیرمجاز سعی میکند وارد سیستم شود یا به سبد خرید مراجعه کند، سایت وارد یک حلقه بازگردانی بینهایت میشود.
نسخههای تحت تأثیر: همه نسخهها
راهحلها:
سعی کنید کوکیهای سایت را حذف کنید؛ این روش ممکن است بسته به مرورگر مورد استفاده کمی متفاوت باشد. یا میتوانید به سادگی صفحه را در حالت ناشناس باز کنید تا بررسی کنید که آیا این مشکل باعث خطا شده است یا خیر.
کش سرور، پروکسی و مرورگر را پاک کنید.
بررسی کنید که آیا بازگردانیهای HTTP به HTTPS روی سرور به درستی تنظیم شدهاند. ممکن است قوانین بازگردانی HTTPS روی سرور شما به اشتباه پیکربندی شده باشد. میتوانید یک قانون بازگردانی به IIS از http به https اضافه کنید. الگوی قانون به شکل زیر است:
<configuration> <system.webServer> <rewrite> <rules> <rule name="http_to_https" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{HTTPS}" pattern="^OFF$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
ERR_TOO_MANY_REDIRECTS همچنین اغلب توسط سرویسهای پروکسی معکوس، مانند Cloudflare، ایجاد میشود. این معمولاً زمانی اتفاق میافتد که گزینه Flexible SSL آنها فعال باشد و شما قبلاً یک گواهی SSL روی سرور میزبان خود نصب کرده باشید. هنگامی که Flexible انتخاب شود، تمام درخواستها به سرور میزبان شما از طریق HTTP ارسال میشوند. سرور میزبان شما به احتمال زیاد قبلاً یک بازگردانی از HTTP به HTTPS تنظیم کرده است و بنابراین، یک حلقه بازگردانی ایجاد میشود. برای رفع این مشکل، باید تنظیمات Crypto در Cloudflare را از Flexible به Full یا Full (strict) تغییر دهید.