アパッチ#

`Apache httpd<https://httpd.apache.org/>`__ を設定して、NetHSM の PKCS#11 モジュールを使用する OpenSSL エンジン経由で NetHSM を使用することができます。

証明書ファイルはディスク上にある必要がありますが、秘密鍵はNetHSMから使用できます。

全例は` <#example>`__ の下にある。

OpenSSLの設定#

`OpenSSL Engine setup guide<openssl.html#engine>`__ に従って、OpenSSLエンジンをセットアップしてください(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 は、NetHSMの秘密鍵を指すPKCS#11`URI<https://www.rfc-editor.org/rfc/rfc7512>`__ でなければならない。

注釈

証明書は別途生成し、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"

パスワードを保護するには、環境変数(`パスワード<pkcs11-setup.html#passwords>`__ を参照)を使うか、httpdのコンフィギュレーションで指定します:

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

#

`の例<https://github.com/Nitrokey/nethsm-pkcs11/tree/main/container/apache>`__ を試してみたい場合は、git を使って`nethsm-pkcs11 リポジトリ<https://github.com/Nitrokey/nethsm-pkcs11>`__ をクローンし、以下のコマンドを実行してください:

警告

生成スクリプトを実行すると、webserver キーが削除され、置き換わる。

  1. NetHSMを設定する。本物のNetHSMでもコンテナでもよい。詳しくは`スタートアップガイド<getting-started.html>`__ を参照。管理者の他に、オペレーター・アカウントが必要です。

  2. nethsm-pkcs11 ドライバー` <https://github.com/Nitrokey/nethsm-pkcs11/releases>`__ から最新版をダウンロードしてインストールしてください。

  3. `OpenSSL Manual<openssl.html>`__ の説明に従って、OpenSSL PKCS11エンジンをインストールする。設定ファイルを作成する必要はありません。

  4. ` `` ` の変数 ` , ` `, ` ` を調整し、 ` ` に NetHSM の URL とポート、 ` に管理者アカウントのユーザー名、 ` ` に対応するパスワードを設定する。さらに、 ` ` に OpenSSL PKCS11 エンジンの絶対パスを、 ` ` に NetHSM PKCS11 ライブラリの絶対パスを設定する。container/apache/generate.sh HOST ADMIN_ACCOUNT ADMIN_ACCOUNT_PWD HOST`ADMIN_ACCOUNT ADMIN_ACCOUNT_PWD OPENSSL_PKCS11_ENGINE_PATH NETHSM_PKCS11_LIBRARY_PATH

  5. NetHSM PKCS11 設定ファイルを` <pkcs11-setup.html#configuration>`__ のいずれかの既知の場所、例えば``/etc/nitrokey/p11nethsm.conf`` に作成します。オペレーター・アカウントを設定し、生成スクリプトで指定したのと同じNetHSMインスタンスを使用する必要があります。

  6. ``container/apache/p11nethsm.conf``のPKCS11設定を、NetHSMsのURLと有効なオペレーター認証情報で更新します。

  7. 証明書と鍵を生成する。

./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/<https://localhost:9443/>`__にあります。ブラウザは、うまくいけば、ウェブサイトの証明書が自己署名であることを警告することに注意してください。