امروز: ۰۲ آذر ۱۴۰۳
در مسیر توسعه فردی و سازمانی
اشتراک دانش علیرضا نصری » نصب ssl در Haproxy (۱۳۹۶/۱۰/۰۹)
تایید شده

استفاده از گواهینامه SSL در Haproxy


 


خلاصه مطلب :‌


در صورتی که نرم افزار شما قابلیت استفاده از SSL  دارد و یا نیاز دارید که بروی سایت خو که از طریق HAproxy  مدیریت می شود، SSL  نصب نمایید می توانید این آموزش را دنبال کنید.


به صورت ساده و رایج بدون در نظر گرفتن Haproxy ،  می توان SSL را به راحتی با روش های مرسوم بروی سایت خود نصب کرد که اغلب خیلی راحت از طریق کنترل پنل  مثل دایرکت ادمین و سی پنل انجام می شود. بطور رایج در این حالت درخواست های SSL یک کاربر در همان سرور، رمزگشایی و رمزنگاری می شود، اما در حالتی که Haproxy  نقش balance درخواست ها را دارد این موضوع به این شکل نیست. در این حالت دو روش وجود دارد که در ادمه به آن ها می پردازیم.


 



  • SSL Termination


 


در این روش درخواست ها در سرور Haproxy  که کار load balance  را برعهده دارد terminate  می شوند، به عبارتی رمز گشایی شده و پس از آن درخواست ها به صورت رمزنگاری نشده به سرور های Backend  ارجاع داده می شود. این بدان معنی است که load balancer  وظیفه رمزگشایی یک ssl connection  را دارد که در مقابل یک درخواست بدون SSL ،‌ کند تر و نیاز به صرف زمان بیشتری برای پردازش توسط CPU ‌ دارد.


از معایب این روش رمزنگاری نبودن اطلاعات بین Haproxy  و سرور های Backend  می باشد.


 



  • SSL Pass-Through


 


همان طور که از نامش پیدا است درخواست ها در این روش به صورت مستقیم به سرور های Backend  پاس داده می شوند که بر خلاف روش اول می باشد.


در این روش Connections SSL بروی سرور های backend  توضیع می شوند و هر درخواست به یک سرور ختم می شود که مصرف و بار CPU  نیز کاهش می یابد‌، گرچه در این روش شما به دلیل encrypt  بودن درخواست ها امکان ویرایش و اضافه کردن header  های http  را نخواهید داشت، که از معایب آن عدم نمایش IP  کاربران در لاگ وب سرور می باشد.


 


روش سومی نیز هست که ترکیبی از این دو روش می باشد و مفهوم مشابهی دارد، که Connections SSL بروی Load Balancer رمز گشایی می شوند و تغییراتی که می توان تغییراتی بروی header  های http  ایجاد کرد و مجدد آنها را رمز نگاری کرد و در نهایت به سرور های Backend ‌ ارسال شوند، در این روش معایب دو روش بالا را نخواهیم داشت اما بار زیادی به CPU  سرور ها اضافه می شود که ممکن است باعث بوجود آمدن bottleneck شود، البته تنظیمات این روش کمی پیچیده می باشد.


در این مقاله تنها به روش اول پرداخته و روش دوم را برای مقاله بعدی در نظر میگیریم.


 


HAproxy با SSL Termination


 


روشی که بیشتر مورد استفاده عموم می باشد SSL Termination است که ما نیز ابتدا به آن می پردازیم، در این صورت گواهی SSL بروی سرور Load balancer‌ نصب می شود.


در این روش از شرکت certum برای sign  کردن CSR  ( Certificate Signing Request ‌) تولیدی استفاده خواهیم کرد.


 


ابتدا پوشه ای دلخواه در مسیر /etc/ssl/ ایجاد نمایید، می توانید نام سایت را قرار دهید


mkdir /etc/ssl/sitessl/


openssl genrsa -out /etc/ssl/sitessl/ssl.key 2048   ساخت یک کلید خصوصی


openssl req -new -key /etc/ssl/sitessl/ssl.key -out /etc/ssl/sitessl/ssl.csr  ساخت یک درخواست    


 


پس از ایجاد فایل csr ، آنرا به مرکز ثبت ssl  می دهیم و آنها به شما چند فایل میدهند که لازم است آنهارا با هم ادقام نمایید.


cat site _com.crt ssl.key site_com.ca-bundle > sitessl.pam


 


سپس در تنظیما haproxy.cfg  موارد زیر را اضافه میکنیم‌:


 


Vi /etc/haproxy/haproxy.cfg


 


listen ha-www-https


bind 0.0.0.0:443 ssl crt /etc/ssl/sitessl/ sitessl.pam


mode http


stats enable


redirect scheme https if !{ ssl_fc }


server app-www-1 192.168.1.4:80 check


server app-www-2 192.168.1.5:80 check


 


موارد بالا تنها Option  های مرتبط با SSL  می باشد موارد دیگر را می توانید اضافه کنید.


دقت نمایید directive  خط پنجم برای redirect  کردن درخواست ها به https  می باشد.


 


 

پاسخ مدیر : ضمن تشکر از شما، این محتوا قبلا در وبلاگ ایران سرور منتشر شده است.
محتوای آخرین دربهای گشوده شده
  • یک باک بنزین 206 معادل 75000 ت بوسیله کلیدک
  • 45000 تومان وجه نقد رایج مملکت بوسیله کلیدک
  • بن خرید یک عدد پیتزا American معادل 35ت بوسیله کلیدک
  • دو عدد  کارت سبز بوسیله کلیدک
  • دو روز ناهار میهمان شرکت به انتخاب خودتان معادل هر نهار ۳۰ ت بوسیله کلیدک
  • بن خرید یک عدد پیتزا American معادل 35ت بوسیله کلیدک
  • بن خرید یک عدد پیتزا American معادل 35ت بوسیله کلیدک
  • 45000 تومان وجه نقد رایج مملکت بوسیله کلیدک
ارسال درخواست دوره یا محتوای آموزشی