Απαιτήσεις
Δημιουργία πιστοποιητικού και ιδιωτικού κλειδιού
Διαμόρφωση του HAProxy
Αυτό το άρθρο θα σας καθοδηγήσει στη ρύθμιση του τερματισμού SSL στο HAProxy, για την κρυπτογράφηση της κυκλοφορίας μέσω HTTPS. Θα χρησιμοποιήσουμε ένα αυτο-υπογεγραμμένο πιστοποιητικό SSL για νέα διεπαφή. Υποτίθεται ότι έχετε ήδη εγκατεστημένο και ρυθμισμένο το HAProxy με ένα τυπικό περιβάλλον HTTP.
Απαιτήσεις
- Vultr VPS
- HAProxy 1.5
- Ubuntu 14.04 LTS (Θα πρέπει να λειτουργεί σε άλλες εκδόσεις και διανομή)
Δημιουργία πιστοποιητικού και ιδιωτικού κλειδιού
Εκτελέστε τις ακόλουθες γραμμές κώδικα για να δημιουργήσετε ένα ιδιωτικό κλειδί και ένα αυτο-υπογεγραμμένο πιστοποιητικό που θα λειτουργεί με το HAProxy.
openssl genrsa -out /etc/ssl/private/server.key 2048
mkdir /etc/ssl/csr
openssl req -new -key /etc/ssl/private/server.key -out /etc/ssl/csr/server.csr
openssl x509 -req -days 365 -in /etc/ssl/csr/server.csr -signkey /etc/ssl/private/server.key -out /etc/ssl/certs/server.crt
cat /etc/ssl/certs/server.crt /etc/ssl/private/server.key > /etc/ssl/certs/server.bundle.pem
Το πρώτο πράγμα που πρέπει να κάνετε είναι να βεβαιωθείτε ότι το SSLv3 είναι απενεργοποιημένο. Λόγω της επίθεσης POODLE, το SSLv3 δεν θεωρείται πλέον ασφαλές. Όλες οι εφαρμογές και οι διακομιστές θα πρέπει να χρησιμοποιούν TLS 1.0 και νεότερη έκδοση. Χρησιμοποιώντας το αγαπημένο σας πρόγραμμα επεξεργασίας κειμένου, ανοίξτε το αρχείο /etc/haproxy/haproxy.cfg. Στο εσωτερικό, αναζητήστε τη γραμμή ssl-default-bind-options no-sslv3κάτω από την globalενότητα. Εάν δεν το βλέπετε, προσθέστε αυτή τη γραμμή στο τέλος της ενότητας πριν από την defaultsενότητα. Αυτό θα διασφαλίσει ότι το SSLv3 είναι απενεργοποιημένο παγκοσμίως. Μπορείτε επίσης να το ρυθμίσετε μέσα στις ενότητες της διεπαφής σας, αλλά συνιστάται να το απενεργοποιήσετε καθολικά.
Στη ρύθμιση HTTPS. Δημιουργήστε μια νέα ενότητα διεπαφής με το όνομα web-https.
frontend web-https
bind public_ip:443 ssl crt /etc/ssl/certs/server.bundle.pem
reqadd X-Forwarded-Proto:\ https
rspadd Strict-Transport-Security:\ max-age=31536000
default_backend www-backend
Για να εξηγήσει:
bind public_ip:443(αλλαγή public_ipστη δημόσια διεύθυνση IP του VPS) λέει στο HAProxy να ακούσει οποιοδήποτε αίτημα αποστέλλεται στη διεύθυνση IP στη θύρα 443(τη θύρα HTTPS).
ssl crt /etc/ssl/certs/server.bundle.pem λέει στο HAProxy να χρησιμοποιήσει το πιστοποιητικό SSL που δημιουργήθηκε προηγουμένως.
reqadd X-Forwarded-Proto:\ https προσθέτει την κεφαλίδα HTTPS στο τέλος της εισερχόμενης αίτησης.
rspadd Strict-Transport-Security:\ max-age=31536000 μια πολιτική ασφαλείας για την πρόληψη επιθέσεων υποβάθμισης.
Δεν χρειάζεται να κάνετε πρόσθετες αλλαγές στην ενότητα υποστήριξης.
Εάν θέλετε το HAProxy να χρησιμοποιεί HTTPS από προεπιλογή, προσθέστε το redirect scheme https if !{ ssl_fc }στην αρχή της www-backendενότητας. Αυτό θα αναγκάσει την ανακατεύθυνση HTTPS.
Αποθηκεύστε τη διαμόρφωσή σας και εκτελέστε service haproxy restartτην επανεκκίνηση του HAPRoxy. Τώρα είστε έτοιμοι να χρησιμοποιήσετε το HAProxy με τελικό σημείο SSL.