Apache#
Μπορείτε να ρυθμίσετε το Apache httpd να χρησιμοποιεί το NetHSM μέσω της μηχανής OpenSSL, η οποία στη συνέχεια χρησιμοποιεί την ενότητα PKCS#11 του NetHSM.
Το αρχείο πιστοποιητικού πρέπει να βρίσκεται στο δίσκο, αλλά το ιδιωτικό κλειδί μπορεί να χρησιμοποιηθεί από το NetHSM.
Ένα πλήρες παράδειγμα είναι διαθέσιμο παρακάτω.
Διαμόρφωση OpenSSL#
Ρυθμίστε τη μηχανή OpenSSL ακολουθώντας τον οδηγό εγκατάστασης της μηχανής OpenSSL ` <openssl.html#engine>`__. (Οι πάροχοι OpenSSL δεν υποστηρίζονται ακόμη από τον Apache httpd.)
Διαμόρφωση Httpd#
Προσθέστε τις ακόλουθες γραμμές στο httpd.conf
:
Listen 443
#...
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
#...
<VirtualHost *:443>
DocumentRoot /usr/local/apache2/htdocs
SSLEngine on
SSLCertificateFile /certs/certificate.pem
SSLCertificateKeyFile "pkcs11:object=webserver"
ErrorLog /tmp/a-error.log
CustomLog /tmp/a-access.log combined
</VirtualHost>
Το SSLCertificateFile
πρέπει να παραπέμπει σε ένα αρχείο πιστοποιητικού στο δίσκο.
Το SSLCertificateKeyFile
θα πρέπει να είναι ένα URI PKCS#11 ` <https://www.rfc-editor.org/rfc/rfc7512>`__ που δείχνει στο ιδιωτικό κλειδί στο NetHSM.
Σημείωση
Πρέπει να δημιουργήσετε το πιστοποιητικό ξεχωριστά και στη συνέχεια να το μεταφορτώσετε στο NetHSM. Εάν το πιστοποιητικό στο δίσκο και το κλειδί στο NetHSM δεν ταιριάζουν, το httpd δεν θα ξεκινήσει.
libnethsm_pkcs11 Διαμόρφωση#
slots:
- label: LocalHSM
description: Local HSM (docker)
url: "https://192.168.3.161:8443/api/v1"
operator:
username: "operator"
password: "opPassphrase"
Για να ασφαλίσετε τον κωδικό πρόσβασης μπορείτε να τον παρέχετε μέσω μιας μεταβλητής περιβάλλοντος (βλ. Passwords) ή να τον παρέχετε στις ρυθμίσεις του httpd:
SSLCertificateKeyFile "pkcs11:object=webserver;type=private;pin=opPassphrase";
Παράδειγμα#
Αν θέλετε να πειραματιστείτε με το παράδειγμα που δίνεται χρησιμοποιήστε το git για να κλωνοποιήσετε το αποθετήριο nethsm-pkcs11 και εκτελέστε τις ακόλουθες εντολές:
Προειδοποίηση
Η εκτέλεση του σεναρίου generate διαγράφει το κλειδί webserver
και το αντικαθιστά.
Διαμορφώστε ένα NetHSM, είτε ένα πραγματικό είτε ένα δοχείο. Ανατρέξτε στον οδηγό getting-started guide για περισσότερες πληροφορίες. Εκτός από έναν διαχειριστή, θα χρειαστείτε και έναν λογαριασμό χειριστή.
Κατεβάστε και εγκαταστήστε την τελευταία έκδοση του προγράμματος οδήγησης nethsm-pkcs11 που είναι διαθέσιμο από εδώ.
Εγκαταστήστε τη μηχανή OpenSSL PKCS11 όπως περιγράφεται στο εγχειρίδιο OpenSSL Manual. Δεν χρειάζεται να δημιουργήσετε ένα αρχείο ρυθμίσεων.
Προσαρμόστε τις μεταβλητές
HOST
,ADMIN_ACCOUNT
καιADMIN_ACCOUNT_PWD
στοcontainer/apache/generate.sh
έτσι ώστεHOST
να περιέχει τη διεύθυνση URL και τη θύρα του NetHSM σας,ADMIN_ACCOUNT
να περιέχει το όνομα χρήστη ενός λογαριασμού διαχειριστή καιADMIN_ACCOUNT_PWD
τον αντίστοιχο κωδικό πρόσβασης. Ρυθμίστε περαιτέρω την απόλυτη διαδρομή της μηχανής OpenSSL PKCS11 στοOPENSSL_PKCS11_ENGINE_PATH
και την απόλυτη διαδρομή της βιβλιοθήκης NetHSM PKCS11 στοNETHSM_PKCS11_LIBRARY_PATH
.Δημιουργήστε ένα αρχείο ρυθμίσεων NetHSM PKCS11 σε μία από τις γνωστές τοποθεσίες ` <pkcs11-setup.html#configuration>`__, π.χ.
/etc/nitrokey/p11nethsm.conf
. Πρέπει να έχει διαμορφωθεί ένας λογαριασμός χειριστή και να χρησιμοποιεί την ίδια περίπτωση NetHSM που καθορίστηκε προηγουμένως στο σενάριο δημιουργίας.Ενημερώστε τη ρύθμιση παραμέτρων PKCS11 στο
container/apache/p11nethsm.conf
με τη διεύθυνση URL του NetHSMs και τα έγκυρα διαπιστευτήρια του χειριστή σας.Δημιουργήστε το πιστοποιητικό και το κλειδί.
./container/apache/generate.sh
Κατασκευάστε το δοχείο.
docker build -f container/apache/Dockerfile . -t pkcs-httpd
Εκτελέστε το εμπορευματοκιβώτιο.
docker run -p 9443:443 -p 9080:80 pkcs-httpd
Η δοκιμαστική σελίδα του Apache θα είναι διαθέσιμη στη διεύθυνση https://localhost:9443/. Σημειώστε ότι το πρόγραμμα περιήγησής σας, ελπίζουμε ότι θα σας προειδοποιήσει ότι το πιστοποιητικό του ιστότοπου είναι αυτο-υπογεγραμμένο.