CentOS-RHEL 8 -ב Hitch תועצמאב הכל ןומטמ רובע HTTPS ליעפהל דציכ


Cache Varnish ב תירוקמ הכימת רסח- SSL/TLS ב שמתשמ התא םא .443 האיציל םירושקה םירחא םילוקוטורפו- Varnish Cache תארקנה תרחא הנכות רידגהלו ןיקתהל ךילע ,ךלש טנרטניאה םושיי יעוציב תא רפשל ידכ

.םירחא םיבגמ םע םג דובעל וילע ,תאז םע ,Varnish ןומטמל תנפצומ אלה הרובעתה תא ריבעמו (HTTPS ירוביחל לדחמה תרירב תאיצי) 443 האיציב הנזאה ידי לע TLS/SSL ירוביח םייסמ הז .MacOSX -ו OpenBSD, F

.םירושיא 500,000- ו הנזאה יעקש 15,000 דע תושרודה תולודג תונקתה רובע בטיה לעופ אוה ,ףסונב .םייללכ םיוות ירושיא ילבו םע ,(תרש םש ןויצ) SNI ,אצומל UNIX לש םוחת עקש ירוביח , בגמל חוקל תאיצי /

.CentOS/RHEL 8 -ב Hitch TLS Proxy תועצמאב Cache Varnish רובע HTTPS רשפאל הארמ הז ךירדמ ,Apache -ו Nginx לש HTTP יתרש רובע Varnish ןומטמ תנקתה תודוא ונלש םימדוקה םירמאמה ינשל ךשמהכ

:האר תרחא ,Apache וא Nginx טנרטניאה תרש רובע Varnish תא תנקתהש חינמ הז ךירדמ

    CentOS/RHEL 8 -ב Hitch -ה תא ןקתה :1 בלש

    .ןכ םג התוא ןקתה ,תנקתומ OpenSSL תליבח ךל ןיא םא .ןכמ רחאל הליבחה תא ןקתה זאו ךלש תכרעמב EPEL תא לעפה תישאר ,ותוא ןיקתהל ידכ .EPEL (Extra Packages for Enterprise Linux) רגאמב תקפוסמ Hitch

    # dnf install epel-release
    # dnf install hitch openssl
    

    .ןלהל רבסומש יפכ ,etc/hitch/hitch.conf/ תבותכב אצמנ Hitch לש ישארה הרוצתה ץבוק .backend -כ הכלו ךלש SSL/TLS ירושיאב שומישל Hitch תא רידגהל םג ךירצ התא .הדובעל הכל ןומטמה תרוצת תא רידגהל

    Hitch רובע הכל ןומטמ לש הרוצת תעיבק :2 בלש

    .Hitch םע תרושקת ךרוצל ,PROXY לוקוטורפב הכימתה תועצמאב (ונלש הרקמב 8443) תפסונ האיציל ןיזאהל Varnish ל ורשפא ,אבה בלשב .3

    .הכירעל Varnish systemd תורישה ץבוק תא חתפ זא

    # systemctl edit --full varnish
    

    .םיינוציח םירוביח אל ךא (הז הרקמב רמולכ תרש ותוא לע םילעופה םיכילהתמ) דבלב ימינפה רוביחה תא לבקי Varnish -ש ושוריפ 127.0.0.1:8443 לש ךרעב שומיש .proxy,127.0.0.1:8443 ךרעה םע -a

    ExecStart=/usr/sbin/varnishd -a :80 -a 127.0.0.1:8443,proxy -f /etc/varnish/default.vcl -s malloc,256m 
    

    .םינורחאה םייונישה תא ליחהל ידכ Varnish תוריש תא שדחמ לעפה זאו ץבוקה תא רומש

    # systemctl restart varnish
    

    SSL/TLS ירושיא תגשה :3 בלש

    .Let's Encrypt -מ תחאב וא תירחסמ הדועתב ,תימצע המיתחב הדועתב שמתשהל דציכ תונושה תויורשפאה תא ריבסנ הז ךירדמל .Hitch תחת שומישל SSL/TLS םירושיאה תליבח תא רוציל דציכ ריבסנ הז קלחב .4

    .OpenSSL ילכב שמתשהל ולכות ,(תימוקמ הקידב תביבסב קר שמתשהל םכילעש) תימצע המיתחב רושיא רוציל ידכ

    # mkdir /etc/ssl/tecmint.lan
    # cd /etc/ssl/tecmint.lan/
    # openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout  tecmint.lan.key -out tecmint.lan.crt
    

    .ןמקלדכ חתפמהו רושיאה לש רורצ רוצ ןכמ רחאל

    # cat tecmint.crt tecmint.key >tecmint.pem
    

    .PEM רורצ רוצ זאו .Let's Encrypt -מ ןיטולחל רכומו יטמוטוא ,םניח רושיא סופתל וא (CA) תירחסמ םירושיא תושרמ רושיא תונקל לוכי התא ,רוצייב שומישל :הרעה

    .גצומכ CA -ה תליבחו רושיאה ,יטרפה חתפמה תא גזמל ךילע ,ירחסמ CA -מ רושיא תינק םא

    # cat example.com.key example.com.crt example.com-ca-bundle.crt > /etc/ssl/example.com.pem 
    

    .גצומש יפכ הליבחה תא רוצ זא ,/etc/letsencrypt/live/example.com/ תחת ונסחואי האלמה תרשרשהו יטרפה חתפמה ,רושיאה ,Let's Encrypt רובע

    # cat /etc/letsencrypt/live/example.com/fullchain.pem /etc/letsencrypt/live/example.com/privkey.pem >/etc/letsencrypt/live/example.com/example.com_bundle.pem
    

    הלקתה תלעפהו הרוצת תעיבק :4 בלש

    .הכירעל ותוא חתפ ,Hitch לש ישארה הרוצתה ץבוקב ,HTTPS -ב שומישל SSL/TLS רושיאה יצבק תא ןייצו Hitch רובע backend -כ Varnish תא רדגה ,ןכמ רחאל .5

    # vi /etc/hitch/hitch.conf
    

    .שינוול ןתוא הריסמו ,תוסנכנ HTTPS תושקבב לפטלו 443 האיציב ץרו תרשל םירבוחמה IPv6 -ו IPv4 יקשממ לכ לע הנזאה איה לדחמה תרירב תרוצת .הל בישקי Hitch -ש האיציה תאו IP -ה תובותכ תא רידגמ ימדקה ק

    .גצומש יפכ pem -ה ץבוק לש רטמרפה תועצמאב רושיאה ץבוק תא ןייצ ,ןכ ומכ .backend רטמרפה תועצמאב ,Hitch לש הרוצתה ץבוקב (Varnish ל תושקב תרבעהל תשמשמה האיציה) 8443 -ל 6086 -מ backend לש לדחמה

    backend = "[127.0.0.1]:8443"
    #pem-dir = "/etc/pki/tls/private"
    pem-file = "/etc/ssl/tecmint.lan/tecmint.pem"
    

    .ותוא רוגסו ץבוקה תא רומש

    .אבה ןפואב לעופ אוה םא תוארל ידכ בצמה תא קודב זאו תכרעמ תכרעמ תוריש םג ליעפמ ,הלעפה םע שומישב --now גתמהש בל םיש .תכרעמה לוחתא תעב יטמוטוא ןפואב ליחתהל ול רשפאו הלקתה תוריש

    # systemctl enable --now hitch
    # systemctl status hitch
    

    .שאה תמוח ךרד רובעל תרשב האיצי ותואל תודעוימה תושקבל רשפאל ידכ שאה תמוחב HTTPS 443 תורישה תאיציל רשפאל ךילע ,HTTPS -ב תעכ לעופ ךלש םושייה/טנרטניאה רתא םא קודבל ךישמתש ינפל .7

    # firewall-cmd --zone=public --permanent --add-service=https
    # firewall-cmd --reload
    

    הכל Cache-Hitch תרדגה םע SSL/TLS םויס תקידב :5 בלש

    .HTTPS לעמ טוונל ידכ ךלש תרשה וא ןיימודה לש IP -ב שמתשהו טנרטניא ןפדפד חתפ .Varnish Cache-Hitch תרדגה תא קודבל ןמזה עיגה .8

    https://www.example.com
    OR
    https://SERVER_IP/
    

    .הכל ןומטמ תועצמאב שגומ ןכותהש רשאל ידכ HTTP -ה תורתוכ תא קודב ,ןעטנ ךלש טנרטניאה םושיי לש סקדניאה דומעש רחאל

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

    הכל ןומטמב HTTPS -ל שדחמ HTTP תיינפה :6 בלש

    .Hitch לש הרוצתה ץבוקב האבה הרוצתה תפסוה ידי לע תאז תושעל לוכי התא .HTTPS -ל HTTP -ה תרובעת לכ תא שדחמ תונפהל ךילע ,דבלב HTTPS -ב ךלש טנרטניאה רתא תא ליעפהל ידכ .9

    # vi /etc/hitch/hitch.conf 
    

    .חוקלה תושקב תיינפהל הטניס עצבלו השקבה תורתוכ תא תונשל םילוכי ונא וב םוקמה הז .הלש יסיסבה םינותנה הנבמל חוקלה תשקב תא חתנמ הכל ןומטמש רחאל דימ העצובש VCL לש הנושארה הלועפה-תת איהש ,vlc_rec

    .ךכ הארייש ךכ ותוא הנש

    sub vcl_recv {
        if (std.port(server.ip) != 443) {
            set req.http.location = "https://" + req.http.host + req.url;
            return(synth(301));
        }
    }
    

    .חוקלה רוביח לבקתה וילע האיציה רפסמ תא ריזחמ std.port (server.ip) וקה זא .server.ip הנתשמהמ Hitch לש הנזאהה תאיצי תא תוארל שילוול רשפאמ PROXY לוקוטורפש בל םיש

    .(םירתא תובותכ תיינפה רמולכ) טנרטניאה ףד לש HTTPS תסרג ןועטל טנרטניאה ןפדפדמ שקבמ טושפ (https:/”+ req.http.host + req.url ") תחטבואמ השקבל (req.http.location רדגה) השקבה לש HTTP םוקימ ת

    .(תותימצל רבעוה) 301 לש HTTP בצמ דוק םע (return (synth (301)) תועצמאב ארקנה) vcl_synth ךרדה-תתל חלשית םוקימה תרתוכ

    .ליעל הטניסה תא דבעל ידכ ,(םישמתשמ תיינפה איה הבש םיברה שומישה ירקממ דחא) האבה vcl_synth הנשמה-תת תא ףסוה ,ןכמ רחאל .10

    sub vcl_synth {
            if (resp.status == 301) {
                    set resp.http.location = req.http.location;
    		  set resp.status = 301;
                    return (deliver);
            }
    }
    

    .הריסמ תלועפ תעצבמו HTTPS -ל שדחמ הינפה השעמל איהש השקבב HTTP םוקימ תרתוכל תרדגומ הבוגתב HTTP םוקימ תרתוכ ,301 אוה הבוגתה בצמ םא קדוב אוה

    .חוקלל התוא תחלושו ןומטמב הבוגתה תא תרמוש ,backend -המ הבוגתה םע הבוגת הנוב Deliver -ה תלועפ

    .ותוא רוגסו ץבוקה תא רומש

    .HTTPS -ל HTTP -מ שדחמ הינפה רושיאל לתלת הדוקפה תרוש ילכב שמתשה זאו .תורישה לש שדחמ הלעפה ידי לע Varnish תרוצתב םישדחה םייונישה תא לחה ,בוש .11

    # systemctl restart varnish
    # curl -I http://eaxmple.com/
    

    .אבה ךסמה םוליצב גצומל ההז הבוגתה םג ,ןפדפדהמ

    .Hitch -ה דועית לא רובע ,תומדקתמ הרוצת תויורשפא לכל .הטמלש בושמה ספוט תועצמאב תולאש וא הבוגת ררחש ,אל םא .וז הדוקנל דע רומג רדסב דבע לכהש םיווקמ ונא