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"

Για να ασφαλίσετε τον κωδικό πρόσβασης μπορείτε να τον δώσετε μέσω μιας μεταβλητής περιβάλλοντος (βλ. Setup) ή να τον δώσετε στη ρύθμιση του httpd:

SSLCertificateKeyFile "pkcs11:object=webserver;type=private;pin=opPassphrase";

Παράδειγμα#

Αν θέλετε να πειραματιστείτε με το παράδειγμα που δίνεται χρησιμοποιήστε το git για να κλωνοποιήσετε το αποθετήριο nethsm-pkcs11 και εκτελέστε τις ακόλουθες εντολές:

Προειδοποίηση

Η εκτέλεση του σεναρίου generate διαγράφει το κλειδί webserver και το αντικαθιστά.

  1. Διαμορφώστε ένα NetHSM, είτε ένα πραγματικό είτε ένα δοχείο. Ανατρέξτε στον οδηγό getting-started guide για περισσότερες πληροφορίες.

  2. Εάν το NetHSM σας δεν εκτελείται στο localhost, θα πρέπει να αλλάξετε τη διεύθυνση URL των αιτήσεων curl στο container/apache/generate.sh ώστε να δείχνει στο NetHSM σας.

  3. Αλλάξτε τις ρυθμίσεις του libnethsm_pkcs11 ώστε να ταιριάζουν με το δικό σας NetHSM στο container/apache/p11nethsm.conf.

  4. Δημιουργήστε το πιστοποιητικό και το κλειδί.

./container/apache/generate.sh
  1. Κατασκευάστε το δοχείο.

docker build -f container/apache/Dockerfile . -t pkcs-httpd
  1. Εκτελέστε το εμπορευματοκιβώτιο.

docker run -p 9443:443 -p 9080:80 pkcs-httpd

Το εμπορευματοκιβώτιο θα είναι διαθέσιμο στη διεύθυνση https://localhost:9443/.