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>

The SSLCertificateFile must point to a certificate file on the disk. The SSLCertificateKeyFile should be a PKCS#11 URI pointing to the private key in the 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"

To secure the password you can provide it via an environment variable (see Passwords) or provide it in the httpd configuration:

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

Παράδειγμα

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

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

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

  1. Configure a NetHSM, either a real one or a container. See the getting-started guide for more information. Besides an administrator, you are going to need an operator account.

  2. Κατεβάστε και εγκαταστήστε την τελευταία έκδοση του προγράμματος οδήγησης nethsm-pkcs11 που είναι διαθέσιμο από εδώ.

  3. Εγκαταστήστε τη μηχανή OpenSSL PKCS11 όπως περιγράφεται στο εγχειρίδιο OpenSSL Manual. Δεν χρειάζεται να δημιουργήσετε ένα αρχείο ρυθμίσεων.

  4. Προσαρμόστε τις μεταβλητές 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.

  5. Create a NetHSM PKCS11 configuration file in one of the known locations, e.g., /etc/nitrokey/p11nethsm.conf. It must have configured an operator account and use the same NetHSM instance specified in the generate script before.

  6. Ενημερώστε τη ρύθμιση παραμέτρων PKCS11 στο container/apache/p11nethsm.conf με τη διεύθυνση URL του NetHSMs και τα έγκυρα διαπιστευτήρια του χειριστή σας.

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

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

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

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

Η δοκιμαστική σελίδα του Apache θα είναι διαθέσιμη στη διεύθυνση https://localhost:9443/. Σημειώστε ότι το πρόγραμμα περιήγησής σας, ελπίζουμε ότι θα σας προειδοποιήσει ότι το πιστοποιητικό του ιστότοπου είναι αυτο-υπογεγραμμένο.