アパッチ¶
`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>
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";
例¶
`の例<https://github.com/Nitrokey/nethsm-pkcs11/tree/main/container/apache>`__ を試してみたい場合は、git を使って`nethsm-pkcs11 リポジトリ<https://github.com/Nitrokey/nethsm-pkcs11>`__ をクローンし、以下のコマンドを実行してください:
警告
生成スクリプトを実行すると、webserver キーが削除され、置き換わる。
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.
nethsm-pkcs11 ドライバー` <https://github.com/Nitrokey/nethsm-pkcs11/releases>`__ から最新版をダウンロードしてインストールしてください。
`OpenSSL Manual<openssl.html>`__ の説明に従って、OpenSSL PKCS11エンジンをインストールする。設定ファイルを作成する必要はありません。
` `` ` の変数 ` , ` `, ` ` を調整し、 ` ` に 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
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.``container/apache/p11nethsm.conf``のPKCS11設定を、NetHSMsのURLと有効なオペレーター認証情報で更新します。
証明書と鍵を生成する。
./container/apache/generate.sh
コンテナを作る。
docker build -f container/apache/Dockerfile . -t pkcs-httpd
コンテナを実行する。
docker run -p 9443:443 -p 9080:80 pkcs-httpd
アパッチのテスト・ページは、`https://localhost:9443/<https://localhost:9443/>`__にあります。ブラウザは、うまくいけば、ウェブサイトの証明書が自己署名であることを警告することに注意してください。