統合化#

この章では、あらゆるユーザーグループを対象に、さまざまなタスクのプロセスを解説しています。

REST-API#

NetHSM の主要なインターフェースは、最高のパフォーマンスと機能を保証する最新の REST-API です。API 仕様は`OpenAPI フォーマット<https://nethsmdemo.nitrokey.com/api_docs/nethsm-api.yaml>`_ で利用可能で、`API ブラウザ<https://nethsmdemo.nitrokey.com/api_docs/index.html>`_ で検査とテストが可能です。

ピーケーシーエスナンバーイレブン#

NetHSM は PKCS#11 標準をサポートしています。必要なドライバは`リポジトリ<https://github.com/Nitrokey/nethsm-pkcs11>`__ から入手できます。このリポジトリには、さまざまなオペレーティングシステム用のソースコードとライブラリが含まれています。`PKCS#11 ガイド<pkcs11-setup.html>`_ に使い方が詳しく説明されています。

開発・テスト#

公開 NetHSM デモインスタンスは`nethsmdemo.nitrokey.com<https://nethsmdemo.nitrokey.com/api/v1/info>`_ で利用可能です。8 時間ごと(CET 6:00、14:00、22:00)にリセットされる。ユーザー "admin"、パスワード "adminadmin"、ロック解除パスワード "unlockunlock"。

また、NetHSMを`Dockerコンテナ<https://hub.docker.com/r/nitrokey/nethsm>`_ として、ローカルで実行することもできます。

コンテナは、次のように実行できます。

$ sudo docker run --rm -ti -p8443:8443 nitrokey/nethsm:testing

これはNetHSMをコンテナ内でUnixプロセスとして実行し、HTTPSプロトコル経由でポート`8443`にREST APIを公開する。

NetHSMをUnixプロセスとして実行するだけでなく、KVMがサポートするユニカーネルとして実行することもできます。

コンテナは、次のように実行できます。

$ docker run -ti --rm -p 8443:8443 --device /dev/net/tun --device /dev/kvm --cap-add=NET_ADMIN nitrokey/nethsm:testing

これは NetHSM を KVM 仮想マシン内のユニカーネルとして実行する。コンテナは HTTPS プロトコルを介して、IP アドレス 192.168.1.100、ポート 8443 のインターフェース tap200 に REST API を公開する。

重要

コンテナは自己署名のTLS証明書を使用しています。正しい接続設定を使用して、接続を確立するようにしてください。詳しくは、`NetHSM導入編<index.html>`__の章をご参照ください。

カスタムアプリケーションへの組込み#

NetHSM を独自のアプリケーションに統合するために、ほとんどのプログラミング言語に対応したクライアントライブラリが用意されています。ここでは、`Python<https://github.com/Nitrokey/nethsm-sdk-py>`_ と`Rust<https://github.com/Nitrokey/nethsm-sdk-rs>`_ 用のライブラリと、`このサードパーティの Rust crate<https://crates.io/crates/nethsm>`_ を紹介します。その他のプログラミング言語については、`OpenAPI Generator<https://github.com/OpenAPITools/openapi-generator>`_ を使用することをお勧めします。

利用可能な全言語の一覧は、以下のように取得できます。

$ docker run --rm -ti openapitools/openapi-generator-cli list -i stable

NetHSMクライアントは、以下のようにしてお使いのプログラミング言語用に生成することができます。

$ docker run --rm -ti -v "${PWD}/out:/out" openapitools/openapi-generator-cli generate -i=https://nethsmdemo.nitrokey.com/api_docs/nethsm-api.yaml -o out -g javascript

生成されたクライアントコード(この例ではJavaScript)は、``./out/``ディレクトリに作成されます。このフォルダには、使用方法の必要なドキュメントも含まれています。

重要

SELinuxを適用しているPodmanを使用する場合、ボリュームマウントへのラベル付けが必要になる場合があります。SELinux のモードは``sestatus |grep "Current mode"`` で指定することができます。モードが``enforcing`` に設定されている場合、コンテキストの変更が必要です。この場合,ボリュームマウントは``:z`` とポストフィックスされ,-v "${PWD}/out:/out:z" となる必要があります.