3.4.7.2 トランザクション・トークンのキー・ペアの作成

アプリケーションは、各MicroTxトランザクションに固有のMicroTx署名付きトランザクション・トークンを含めることをサポートしています。

transactionTokenEnabledをtrueに設定すると、MicroTxは、署名付きトランザクション・トークンであるtmm-tx-tokenという新しいトークンを作成します。トランザクション・イニシエータがリクエストを開始すると、MicroTxtmm-tx-tokenを使用して応答します。参加側サービスからMicroTxへのコールを保護するために、MicroTxライブラリはリクエスト・ヘッダーでtmm-tx-tokenを渡します。ユーザーがtmm-tx-tokenトランザクション・トークンを作成したり、リクエスト・ヘッダーで渡したりする必要はありません。MicroTxライブラリは、指定した秘密キーと公開キーのペアに基づいてこのトークンを作成します。

生成するトランザクション・トークンには、次の属性が必要です:
  • 非対称アルゴリズム: RSA 3072
  • キーの長さ: 3072ビット
  • ハッシュ・アルゴリズム: SHA256

開始する前に、OpenSSLをインストールしたことを確認します。

  1. 次のコマンドを使用して、キーの長さが3072ビットのRSA秘密キーを作成します:
    openssl genrsa -aes256 -out private.pem 3072
  2. コマンド・プロンプトでパスフレーズを入力し、[Enter]を押します。後で指定する必要があるため、パスフレーズを覚えておいてください。

    private.pemという名前の新しいファイルが現在の作業フォルダに作成されます。このファイルにRSA秘密キーの値が含まれています。

  3. 生成した秘密キーに対するRSA公開キーを作成します。以下のコマンドを使用します。

    次のコマンドによって、現在の作業フォルダにpublic.pemという名前の新しいファイルが作成されます。このファイルにRSA公開キーの値が含まれています。

    openssl rsa -in private.pem -outform PEM -pubout -out public.pem
  4. 次のコマンドを実行して、private.pemファイルをbase64でエンコードします。

    コマンド例

    base64 private.pem

    private.pemファイルのbase64エンコード値が返されます。

    レスポンス例

    LS0tLS...LS0tLQo=

    レスポンス例は、読みやすくするために省略記号(...)を使用して一部を省いています。

    private.pemファイルのbase64エンコード値を書き留めます。

  5. private.pemファイルのbase64エンコード値を含むKubernetesシークレットを作成します。

    次のコマンドは、MicroTxをインストールするotmmネームスペースにTMMPRIVKEY1という名前のKubernetesシークレットを作成します。

    kubectl create secret generic TMMPRIVKEY1 \ --from-literal=secret='LS0tLS...LS0tLQo=' -n otmm

    Kubernetesシークレットの名前を書き留めます。この値は、後でvalues.yamlファイルに指定する必要があります。

  6. 次のコマンドを実行して、public.pemファイルをbase64でエンコードします。

    コマンド例

    base64 public.pem

    public.pemファイルのbase64エンコード値が返されます。

    レスポンス例

    LS0tLS...LS0tCg==

    レスポンス例は、読みやすくするために省略記号(...)を使用して一部を省いています。

    public.pemファイルのbase64エンコード値を書き留めます。

  7. public.pemファイルのbase64エンコード値を含むKubernetesシークレットを作成します。

    次のコマンドは、otmmネームスペースにTMMPUBKEY1という名前のKubernetesシークレットを作成します。

    kubectl create secret generic TMMPUBKEY1 \ --from-literal=secret='LS0tLS...LS0tCg==' -n otmm

    Kubernetesシークレットの名前を書き留めます。この値は、後でvalues.yamlファイルに指定する必要があります。

  8. ステップ2で指定した秘密キーのパスフレーズを値として含むKubernetesシークレットを作成します。

    次のコマンドは、otmmネームスペースにTMMPRIVKEYPASSWD1という名前と<pph...>というキー・パスフレーズでKubernetesシークレットを作成します。

    kubectl create secret generic TMMPRIVKEYPASSWD1 \ --from-literal=secret='<pph...>' -n otmm

    ここで、<pph...>は秘密キーのパスフレーズです。これを環境に固有の値に置き換えます。

    ノート:

    キー・パスフレーズはプレーンテキスト形式で入力する必要があるため、キー・パスフレーズをbase64でエンコードしないでください。

    Kubernetesシークレットの名前を書き留めます。この値は、後でvalues.yamlファイルに指定する必要があります。