Ρύθμιση TLS με τον Apache2#
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
⨯ |
⨯ |
⨯ |
Συμβουλή
Η ίδια ακριβώς έννοια που περιγράφεται εδώ μπορεί να χρησιμοποιηθεί για πολλές εφαρμογές που χρησιμοποιούν το openssl ως κρυπτο-υπολογιστή. Η ιδέα συνοψίζεται κυρίως στο εξής: αντικατάσταση του (μυστικού) αρχείου κλειδιού με PKCS#11 URL που παραπέμπει σε ένα κλειδί σε ένα σύμβολο ασφαλείας (Nitrokey).
Προετοιμασία#
Βεβαιωθείτε ότι η έκδοση του apache2 είναι τουλάχιστον 2.4.42 για σωστή υποστήριξη
mod_ssl
.ενεργοποίηση του
mod_ssl
με τη χρήση τουa2enmod ssl
, αν δεν έχει ήδη γίνειΕπιπλέον, απαιτείται
openssl
καιlibengine-pkcs11-openssl
βλέπε PKCS#11 URL
Ρύθμιση του Apache2 ώστε να χρησιμοποιεί ένα κλειδί ασφαλείας#
Βασικά το μόνο που πρέπει να κάνετε είναι να αντικαταστήσετε το SSLCertificateFile
με την κατάλληλη διεύθυνση URL PKCS#11 και να διαγράψετε οποιεσδήποτε άλλες αναφορές σε κλειδιά ή πιστοποιητικά. Π.χ., το SSLCertificateKeyFile
δεν χρειάζεται πλέον.
Ένα παράδειγμα οδηγίας μπορεί να μοιάζει με αυτό:
SSLCertificateFile "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0123123;token=UserPIN%20%28SmartCard-HSM%29;id%01"
Η κατάλληλη διεύθυνση URL PKCS#11 μπορεί να εξαχθεί όπως περιγράφεται στο PKCS#11 URL Generation
Φροντίστε να τοποθετήσετε την οδηγία μέσα σε μια ρύθμιση παραμέτρων VirtualHost.
Παροχή PIN κατά την εκκίνηση του Apache2#
Χρησιμοποιώντας τη μέθοδο που περιγράψαμε προηγουμένως, ο Apache2 θα ζητάει σε κάθε εκκίνηση τον κωδικό χρήστη-ΠΙΝ, απορρίπτοντας έτσι ουσιαστικά τη μαζική εκκίνηση. Ο Apache2 παρέχει μια άλλη οδηγία για την παροχή του PIN κατά την εκκίνηση.
SSLPassPhraseDialog "|/bin/echo 123456"
Ο Apache2 αναμένει ένα εκτελέσιμο αρχείο μετά το |
, το οποίο θα εκτελεστεί κατά την εκκίνηση και η έξοδός του (αναμένεται η newline στο τέλος) θα χρησιμοποιηθεί ως PIN. Προφανώς, αυθαίρετες πολύπλοκες μέθοδοι ανάκτησης PIN μπορούν να υλοποιηθούν με τη χρήση αυτής της προσέγγισης. Παρόλο που εδώ έχει επιλεγεί ένα τετριμμένο παράδειγμα για την απλή echo
του PIN κατά την εκκίνηση.
Περαιτέρω SSLPassPhraseDialog
είναι μια παγκόσμια οδηγία, επομένως πρέπει να τοποθετηθεί στην παγκόσμια εμβέλεια ρυθμίσεων στον Apache2.
Προειδοποίηση
Αυτό το παράδειγμα δεν είναι ένας ασφαλής μηχανισμός για να περάσετε το PIN σας, καθώς θα γραφτεί σε απλό κείμενο μέσα στη διαμόρφωσή σας.
Δείτε την Apache2 mod_ssl documentation για περισσότερες λεπτομέρειες σχετικά με αυτή τη λειτουργία.
Πλήρες παράδειγμα παραμέτρων Apache2 Config#
Ένα πλήρες απόσπασμα παραμέτρων του Apache2 (VirtualHost
) μπορεί να μοιάζει με αυτό:
<IfModule mod_ssl.c>
SSLPassPhraseDialog "|/bin/echo 123456"
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile "pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0105076;token=UserPIN%20%28SmartCard-HSM%29"
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>