העברת עיבוד SSL ל-Load Balancer: חידוש אוטומטי וחיסכון במעבד

שרתי הקצה שלך מבזבזים משאבים יקרים על הצפנת כל בקשת HTTPS, מה שמאט את הביצועים ומעלה את עומס המעבד. אנחנו מעבירים את סיום ה-SSL ל-load balancer, ומשחררים את השרתים למשימות הליבה שלהם. הצוות שלנו מספק את הפרויקט במפתח מלא—מההתקנה ועד לחידוש אוטומטי של התעודה—ומבטיח פעילות יציבה ותמיכה שוטפת.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

תעבורת HTTPS גדלה, והשרתים האחוריים נחנקים מלחיצות ידיים של TLS. כל בקשה חדשה דורשת הצפנה א-סימטרית — ב-10,000 RPS, המעבד מגיע ל-90% עומס. במקום שכל שרת upstream יבזבז משאבים, אנו מורידים את סיום ה-SSL למאזן העומס. זהו נוהג סטנדרטי המתואר בויקיפדיה. אנו מגדירים זאת כך שהאישורים מתחדשים ללא השבתה והלקוחות לא רואים שגיאות.

מדוע סיום SSL מפחית את עומס השרתים האחוריים

לחיצות ידיים של SSL דורשות פעולות א-סימטריות יקרות. אם כל שרת אחורי מטפל בהן באופן עצמאי, המעבד כבר עמוס ב-10k RPS. הורדת העומס למאזן העומס מפחיתה את העומס ב-60–80% ומפשטת את ניהול האישורים: דומיין אחד — אישור אחד, לא עותקים על כל מכונה. מאזן העומס מטפל בכל פעולות ההצפנה, בעוד השרתים האחוריים עובדים על HTTP, מה שמאיץ עוד יותר את התגובות. חיסכון במעבד מסיום SSL בולט במיוחד בעומס גבוה — ניתן לחסוך עד $2,000 לשרת בשנה בעלויות מעבד.

אילו בעיות פותר סיום SSL?

הבעיה הנפוצה ביותר היא שרשרת אישורים לא מלאה. מאזן העומס שולח רק את אישור העלה ללא ה-CA הביניים. הדפדפן סומך עליו, curl שותק, אך openssl s_client -connect example.com:443 -showcerts מציג Verify return code 21 — לא ניתן לאמת את האישור הראשון. לקוחות ניידים וגרסאות JDK ישנות נכשלים עם 'PKIX path building failed'.

נקודת הכאב השנייה היא חידוש אוטומטי של Let's Encrypt. Certbot חידש את האישור, אך HAProxy לא טען אותו מחדש ללא אתחול — ב-3 לפנות בוקר האתר מגיש אישור שפג תוקפו. אנו פותרים זאת באמצעות Runtime API או אותות טעינה מחדש ללא אובדן חיבור.

בדיקת שרשרת האישורים לאבחון, השתמשו בפקודה openssl s_client -connect example.com:443 -showcerts. אם קוד ההחזרה הוא 21, שלבו את fullchain.pem, אישור הביניים ואישור השורש לקובץ אחד. בדיקה דרך SSL Labs תעניק דירוג A+.

כיצד הגדרנו סיום SSL עבור אשכול פינטק

לאחרונה הגדרנו אשכול HAProxy עבור חברת פינטק: 20 דומיינים, עדכונים ללא השבתה דרך Runtime API. בעבר, כל שרת אחורי טיפל ב-SSL באופן עצמאי — ב-15k RPS, המעבד היה עמוס ב-90%. לאחר העברת הסיום למאזן העומס, העומס ירד ל-25%, ודירוג SSL Labs הגיע ל-A+. האישורים מתחדשים אוטומטית דרך deploy-hook עם אפס השבתה במשך שישה חודשי פעילות. כפי שנכתב בתיעוד HAProxy: Runtime API מאפשר עדכון אישורים ללא אתחול התהליך.

הגדרת סיום SSL שלב אחר שלב

  1. בחרו מאזן עומס: nginx לפרויקטים פשוטים (1–10 דומיינים), HAProxy לאשכולות הדורשים אפס השבתה.
  2. צרו אישור: קבלו fullchain.pem ו-privkey.pem מ-Let's Encrypt או מ-CA מסחרי.
  3. הגדירו: ציינו ssl_certificate, ssl_certificate_key, הגבילו פרוטוקולים (TLSv1.2+TLSv1.3) וצופנים (ECDHE+AES-GCM).
  4. בדקו: בדקו את השרשרת, HSTS, X-Forwarded-Proto באמצעות testssl.sh ו-Security Headers Score.
  5. חידוש אוטומטי: הגדירו deploy-hook לעדכון האישור ללא השבתה.

תצורת nginx עם סיום SSL

upstream backend {
    server 10.0.1.10:8080;
    server 10.0.1.11:8080;
    keepalive 32;
}

server {
    listen 443 ssl http2;
    server_name example.com;
    ssl_certificate /etc/ssl/certs/example.com.fullchain.pem;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;
    add_header Strict-Transport-Security "max-age=63072000" always;
    location / {
        proxy_pass http://backend;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

הכותרת upstream backend { server 10.0.1.10:8080; server 10.0.1.11:8080; keepalive 32; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/ssl/certs/example.com.fullchain.pem; ssl_certificate_key /etc/ssl/private/example.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; ssl_session_tickets off; add_header Strict-Transport-Security "max-age=63072000" always; location / { proxy_pass http://backend; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Connection ""; } } server { listen 80; server_name example.com; return 301 https://$host$request_uri; } היא קריטית — בלעדיה, האפליקציה חושבת שקיבלה בקשת HTTP ומייצרת קישורי http://, מה ששובר הפניות ו-Mixed Content.

HAProxy עם חידוש אישורים אוטומטי

HAProxy מגרסה 2.2 יכול לטעון אישורים מחדש ללא אתחול דרך Runtime API:

echo "set ssl cert /etc/haproxy/certs/example.com.pem < /etc/haproxy/certs/example.com.new.pem" \
 | socat stdio /run/haproxy/admin.sock
echo "commit ssl cert /etc/haproxy/certs/example.com.pem" \
 | socat stdio /run/haproxy/admin.sock

זה מאפשר שילוב deploy-hook של Certbot ללא השבתה:

# /etc/letsencrypt/renewal-hooks/deploy/haproxy-reload.sh
cat /etc/letsencrypt/live/example.com/fullchain.pem \
    /etc/letsencrypt/live/example.com/privkey.pem \
    > /etc/haproxy/certs/example.com.pem
echo "set ssl cert /etc/haproxy/certs/example.com.pem < /etc/haproxy/certs/example.com.pem" \
    | socat stdio /run/haproxy/admin.sock
echo "commit ssl cert /etc/haproxy/certs/example.com.pem" \
    | socat stdio /run/haproxy/admin.sock

בחירה בין nginx ל-HAProxy

בבחירת מאזן עומס, שקלו את המורכבות: HAProxy מתמודד עם עד מיליון לחיצות ידיים/שנייה — פי 1.2 מהר יותר מ-nginx על מעבד חלש.

פרמטר nginx HAProxy
פשטות התצורה גבוהה בינונית
עדכון אישורים דינמי דורש טעינה מחדש (graceful) Runtime API (ללא אובדן)
ביצועי TLS ~90% מ-HAProxy ייחוס (עד 1M לחיצות ידיים/שנייה)
טיפול בריבוי דומיינים דרך server_name דרך SNI (דורש הגדרה)

אם יש לכם 1–10 דומיינים ואתם רוצים מהירות, השתמשו ב-nginx. אם יש לכם אשכול של 100+ דומיינים ואפס השבתה הוא קריטי, השתמשו ב-HAProxy.

טעויות נפוצות וכיצד להימנע מהן

  • שרשרת לא מלאה: בדקו עם X-Forwarded-Proto: https. אם קוד 21 — שלבו fullchain + int + root.
  • הפניה HTTP→HTTPS ללא HSTS: תוקף יכול לבצע מתקפת הורדת דרגה. הוסיפו echo "set ssl cert /etc/haproxy/certs/example.com.pem < /etc/haproxy/certs/example.com.new.pem" \ | socat stdio /run/haproxy/admin.sock echo "commit ssl cert /etc/haproxy/certs/example.com.pem" \ | socat stdio /run/haproxy/admin.sock .
  • חוסר ב-X-Forwarded-Proto: האפליקציה מייצרת קישורי http. תמיד העבירו את הפרוטוקול.
  • חידוש אישורים ידני: הגדירו deploy-hook מיד כדי לא לשכוח.
  • ללא בדיקת SSL Labs לאחר הפריסה: המטרה היא דירוג A+.

תהליך העבודה שלנו ולוחות זמנים

שלב משך
ביקורת ואיסוף דרישות 2–4 שעות
עיצוב ארכיטקטורה 1–2 שעות
יישום בסביבת staging 4–8 שעות
בדיקות (SSL Labs, curl, חידוש אוטומטי) 2–4 שעות
פריסה לייצור 1–2 שעות
היקף לוח זמנים
מאזן עומס יחיד, דומיין אחד 4–8 שעות
ריבוי דומיינים, wildcard יום אחד
אשכול HAProxy/nginx + חידוש אוטומטי 1–2 ימים

מה כלול בהתקנה

  • ביקורת של תכנית איזון העומס והאישורים הנוכחית
  • עיצוב תצורה אופטימלית (nginx/HAProxy, בחירת פרוטוקולים)
  • הגדרת סיום SSL עם בדיקת שרשרת
  • שילוב חידוש אוטומטי של Let's Encrypt דרך deploy-hook
  • בדיקת אבטחה: HSTS, X-Forwarded-Proto, Security Headers
  • תיעוד מלא של התצורה והנהלים
  • הדרכה למהנדסי כוננות (עד שעתיים)
  • תמיכת אחריות לשבועיים עם סיוע מרחוק

עם ניסיון של למעלה מ-5 שנים ו-50+ פרויקטים מוצלחים, הצוות שלנו מספק פתרונות אמינים להורדת SSL. קבלו ייעוץ על הגדרת סיום SSL לפרויקט שלכם — נעריך את התכנית הנוכחית שלכם ונציע תצורה אופטימלית. צרו קשר כדי לדון בפרטים.