Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerCryptography Module をバージョン 2.x.x にアップグレードします。
このリリースには、次の変更が含まれています。
コネクタ操作のデフォルト値の変更
FIPS モードで操作する場合に PGP キーリングを AES 暗号化キーに移行
Sign、Encrypt、および Decrypt 操作で異なるキーペアを使用したセキュリティの強化
パスワードベースの暗号化の使用
必須のキーストアとトラストストア種別として BCFKS の使用
アルゴリズムの動的な指定
XMLDSig セキュリティプロバイダーの登録
KDF パラメーターなしで Decrypt または Validate 操作の互換性の有効化
| このガイドでは Federal Information Processing Standards (FIPS) への参照はすべて FIPS バージョン 140-2 または 140-3 に関連します。 |
Cryptography Module 2.0.0 を使用するためのサポートされる最小 Mule Runtime Engine バージョンは 4.4.x です。FIPS コンプライアンスおよびサポートされるランタイム環境との互換性を確認してください。 古いバージョンを使用している場合は、Mule Runtime をアップグレードしてください。
以下の手順でアップグレードを実行します。
Anypoint Studio で、Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] で、[Search in Exchange (Exchange 内を検索)] をクリックします。
[Add Dependencies to Project (連動関係をプロジェクトに追加)] で、検索項目に「cryptography module」と入力します。
[Available modules (使用可能なモジュール)] で、[Cryptography Module] を選択して [Add (追加)] をクリックします。
[Finish (完了)] をクリックします。
Mule プロジェクトの pom.xml ファイルで mule-cryptography-module 連動関係のバージョンが 2.0.0 であることを確認します。
Studio はコネクタを自動的にアップグレードします。
Cryptography Module をアップグレードしたら、モジュールはセキュリティプロバイダーをバンドルしなくなります。
環境にすでにセキュリティプロバイダー (MuleSoft Government Cloud 環境内のセキュリティプロバイダーなど) がある場合、追加の設定を行わないでください。既存の環境でセキュリティプロバイダーが提供されます。
それ以外の場合、Bouncy Castle (BC) または Bouncy Castle FIPS (BCFIPS) のいずれかの連動関係を additionalPluginDependencies または共有ライブラリとして Mule アプリケーションの pom.xml ファイルに含めることで Mule アプリケーションプロジェクト設定に追加します。これにより、モジュールはその操作に必要なセキュリティプロバイダーにアクセスできるようになります。
BCFIPS の連動関係
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bc-fips</artifactId>
<version>${bc-fips.version}</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpg-fips</artifactId>
<version>${bcpg-fips.version}</version>
</dependency>
BC の連動関係
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpg-jdk18on</artifactId>
<version>${bcpg.version}</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
<version>${bcprov.version}</version>
</dependency>
Bouncy Castle バージョン 1.80 以降、プロジェクトバージョンは内部的に大幅に再編成されました。これは、bcprov-jdk18on や bcpg-jdk18on などの JDK18on アーティファクトを使用する場合にどのようにライブラリを含める必要があるかに影響します。
バージョン 1.80 より前のバージョン (1.79 以前など) では、PGP 操作のすべての機能とパスワードベースの暗号化 (PBE) 機能を有効にするには、bcprov-jdk18on または bcpg-jdk18on ライブラリのみを追加すれば十分でした。
次の追加ライブラリは必須です。その理由を次に示します。
bcpkix-jdk18on には、PGP 操作で使用する ASN.1 構造など、不可欠な暗号化プロトコルクラスが含まれます。
bcutil-jdk18on には、その他のモジュールの低レベル操作によって参照されるようになったユーティリティクラスが含まれます。
これらの連動関係を追加しない場合、次のようなランタイムエラーが発生する可能性があります。
java.lang.ClassNotFoundException: org.bouncycastle.bcpg.ArmoredOutputStream
java.lang.NoClassDefFoundError: org.bouncycastle.asn1.cryptlib.CryptlibObjectIdentifiers
java.lang.IllegalArgumentException: Attempt to override lookup strategy ParentFirstLookupStrategy for package: org.bouncycastle.asn1.nist
このため、非 FIPS モードで BC バージョン 1.80 以上を Cryptography Module 2.0.0 で使用する場合、次のライブラリを Mule アプリケーションに含めていることを確認してください。
bcprov-jdk18on
bcpg-jdk18on
bcpkix-jdk18on
Bcutil-jdk18on
FIPS 準拠の環境を使用する場合は、bc-fips および bcpg-fips ライブラリを使用します。
モジュールの最新バージョンをインストールしたら、アップグレードを確認します。
Studio の [Problems (問題)] または [Console (コンソール)] ビューでエラーがないことを確認します。
プロジェクトの pom.xml ファイルに問題がないことを確認します。
接続をテストして、操作が機能することを確認します。
前のバージョンの Cryptography Module に戻す必要がある場合は、Anypoint Studio に移動して以下を実行します。
プロジェクトの pom.xml ファイルで mule-cryptography-module 連動関係バージョン 2.0.0 を以前のバージョンに変更し、使用している連動関係を <dependencies> セクションから削除します。
[Execute] タブに戻り、[Engine (エンジン)] セクションでいずれかのデフォルトエンジンを選択します。
[Configuration XML (設定 XML)] タブで、選択済みのエンジン名も変更されていることを確認します。
Cryptography Module のセキュリティ態勢を向上するため、バージョン 2.0.0 では操作と設定パラメーターの多くのデフォルト値が更新されました。これらの変更は、よりセキュアなアルゴリズムスタックと最新の暗号化手法の採用を反映するものです。
以前のバージョンから移行する場合は、バージョン 1.x で使用していたデフォルト値を宣言します。これにより、互換性が確保され、新しいバージョンでのデフォルト値の変更による予期しない結果が回避されます。
次の表で、バージョン 2.0.0 で変更されたデフォルト値を示します。
| コンポーネント | バージョン 1.x のデフォルト | バージョン 2.0.0 のデフォルト |
|---|---|---|
XML Signature Digest Algorithm (XML 署名ダイジェストアルゴリズム) |
|
|
JCE PBE Signature Algorithm (JCE PBE 署名アルゴリズム) |
|
|
JCE PBE Encryption/Decryption Algorithm (JCE PBE 暗号化/復号化アルゴリズム) |
|
|
Checksum Algorithm (チェックサムアルゴリズム) |
|
|
Keystore Type (キーストア種別) |
|
なし。明示的に指定する必要があります。FIPS では BCFKS が必要です。 |
PGP 操作を実行する場合に Mule アプリケーションが FIPS に準拠するようにするには、Advanced Encryption Standard (AES) 暗号化を使用するように PGP キーリングを移行する必要があります。
デフォルトの PGP キー生成では、FIPS 準拠ではない CAST5 暗号化が使用されます。非準拠の暗号化を使用すると、org.mule.runtime.api.exception.MuleRuntimeException などのランタイム例外が発生する可能性があります。これは、署名されたコンテンツ形式に問題があり、署名操作に失敗したことを示しています。この例外は、PGP 操作によって返された InputStream が空または破損している場合に発生する可能性があります。
PGP 署名に関する FIPS コンプライアンスを達成するには、次のプロセスを実行します。
キーリングとキーを作成する
AES にキーを移行する
秘密鍵と公開鍵をエクスポートする
キーリングを使用するように Cryptography Module を設定する
| ロールバックを実行する必要がある場合に備えて、キーリングとキーのバックアップを作成します。 |
キーリングを最初から作成するには、GNU GPG を使用して次の手順を実行します。
次のコマンドを実行して、新しいキーリングを作成します。
gpg --no-default-keyring --keyring example.kbx --fingerprint
gpg: keybox '/Users/youruser/.gnupg/example.kbx' created
後で使用する新しいキーボックスの場所を保存します。
次のコマンドを実行し、返された手順に従って、署名または検証用の PGP キーを作成します (DSA が FIPS 準拠ではないため、RSA を暗号化として選択します)。
gpg --no-default-keyring --keyring example.kbx --full-generate-key
gpg (GnuPG/MacGPG2) 2.2.41; Copyright (C) 2022 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
(14) Existing key from card
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.
Real name: Test
Name must be at least 5 characters long
Real name: TestName
Email address: test@example.com
Comment:
You selected this USER-ID:
"TestName <test@example.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: revocation certificate stored as '/Users/youruser/.gnupg/openpgp-revocs.d/991F7216B03C0B2B088AB20D5F46261934B56AF2.rev'
public and secret key created and signed.
pub rsa4096 2024-12-26 [SC]
991F7216B03C0B2B088AB20D5F46261934B56AF2
uid TestName <test@example.com>
sub rsa4096 2024-12-26 [E]
キーを AES に移行する前に、次のコマンドを実行して、キーをリストし、そのフィンガープリントを見つけます。
gpg --no-default-keyring --keyring /Users/youruser/.gnupg/example.kbx --list-secret-keys --keyid-format=long --fingerprint
/Users/youruser/.gnupg/example.kbx
-----------------------------------
sec rsa4096/5F46261934B56AF2 2024-12-26 [SC]
Key fingerprint = 991F 7216 B03C 0B2B 088A B20D 5F46 2619 34B5 6AF2
uid [ultimate] TestName <test@example.com>
ssb rsa4096/E7C647D222B1F1C1 2024-12-26 [E]
SHA256 を使用して各キーを AES に移行して FIPS 準拠にします。
フィンガープリントを移行するキーをコピーします。
キーをこのコマンドにスペースなしで貼り付けます。このコマンドを実行すると、コマンドラインが有効になります。
gpg --no-default-keyring --keyring /Users/youruser/.gnupg/example.kbx --s2k-cipher-algo AES256 --s2k-digest-algo SHA256 --s2k-mode 3 --s2k-count 65000000 --edit-key [KEYID]
キーのパスワードを変更するには、passwd コマンドを入力します。同じパスワードを使用できます。プロンプトでは最初に現在のパスワードが要求され、次に新しいパスワードが要求されます。
passwd
Comand+C (macOS) または Ctrl+C (その他のオペレーティングシステム) を押して、gpg プロンプトを終了します。
キーボックスにリストされたキーごとにこの手順を繰り返します。
キーを作成または移行したら、想定される保護アルゴリズム (AES-256 と SHA-256) が正しく適用されていることを検証します。
次のコマンドを実行して、秘密鍵に適用されている実際の保護を調べます。
gpg --export-secret-keys [KEYID] | gpg --list-packets
出力で次のような行を探します。
iter+salt S2K, algo: 9, SHA256 protection, hash: 8
この参照を使用して値を解釈します。
| アルゴリズム | ハッシュ関数 |
|---|---|
|
|
出力に AES128 または SHA1 が示されている場合、保護が正しく適用されておらず、キーが FIPS 準拠ではないことを意味します。この場合、移行プロセスを繰り返すか、次の代替方法の使用を検討してください。
キーを AES に移行したら、秘密鍵と公開鍵をエクスポートします。
次のコマンドを実行し、mule-cryptography-module モジュールで使用する秘密キーリングに秘密鍵をエクスポートします。各秘密鍵のパスワードをキーボックスに入力するように要求されます。
gpg --no-default-keyring --keyring /Users/youruser/.gnupg/example.kbx --export-secret-keys > secring_example_aes.gpg
必要に応じて公開鍵をエクスポートします。
gpg --no-default-keyring --keyring /Users/youruser/.gnupg/example.kbx --export > pubring_example_aes.gpg
場合によって、次のコマンドを実行しても以下のようになる場合があります。
gpg --s2k-cipher-algo AES256 --s2k-digest-algo SHA256 --s2k-mode 3 --s2k-count 65000000 --edit-key [KEYID]
キーが引き続き AES128 と SHA1 で保護されているように見える場合があります。これは、GPG 2.1 以降に導入された変更によるものです。つまり、秘密鍵保護は gpg で直接管理されなくなり、gpg-agent で管理されるようになったためです。
GPG 2.1 以降では、gpg は保存時の秘密鍵の暗号化を直接行いません。また、--s2k-cipher-algo などのオプションに効果はありません。代わりに、gpg-agent が単独で行います。これは、使用中の暗号化またはダイジェストアルゴリズムを変更するためのインターフェースを提供しません。 詳細は、 「Allow s2k options for gpg --export-secret-key (gpg の s2k オプション --export-secret-key の許可)」および 「S2K don’t work HELP (S2K が動作しない HELP)」 を参照してください。
実際の状況:
GPG 2.1+ でキーを生成または編集するときに、コマンドラインで渡された S2K パラメーターまたは gpg.conf に保存された S2K パラメーターは適用されません。
gpg-agent では内部的なデフォルト (通常は AES128 と SHA1) が使用されます。これらを変更するための設定インターフェースはありません。
秘密鍵を AES256 や SHA256 などの特定のアルゴリズムで保護する場合、Java と Bouncy Castle を使用して秘密鍵を直接作成します。
この方法では、次を完全に制御できます。
暗号化アルゴリズム: AES-256
ハッシュダイジェスト: SHA-256
S2K モード: 反復およびソルト (モード 3)
反復回数: 65,000,000 など
例:
new JcePBESecretKeyEncryptorBuilder(PGPEncryptedData.AES_256, sha256Calc)
.setProvider("BC")
.build(password.toCharArray());
この方法では FIPS 準拠の保護が保証されるため、自動化または制御された環境に適しています。
署名および検証用に生成されたキーリングを使用するように Cryptography Module を設定します。
secring_example.aes.gpg と pubring_example_aes.gpg を Mule プロジェクトの src/main/resources フォルダーまたはオンプレミスサーバー内の場所にコピーします。
Cryptography Module の PGP 操作で使用する次のような pop 設定を作成します。
<crypto:pgp-config name="pgpConfig-aes" publicKeyring="pubring_example_aes.gpg" privateKeyring="secring_example_aes.gpg">
<crypto:pgp-key-infos>
<crypto:pgp-asymmetric-key-info keyId="validation" fingerprint="5F46261934B56AF2" passphrase="mule1234"/>
<crypto:pgp-asymmetric-key-info keyId="signature"
principal="TestName <test@example.com>"/>
</crypto:pgp-key-infos>
</crypto:pgp-config>
Cryptography Module の PGP 操作に関する注意事項:
検証に使用するフィンガープリントは、前の例で示されているように、完全な値または末尾の 16 文字とすることができます。
署名操作で、署名されたコンテンツの生成に失敗した場合、FIPS 環境では実行時に org.mule.runtime.api.exception.MuleRuntimeException がスローされることがあります。これは、InputStream が空または破損している場合や、キーリングまたは生成された PGP キーで非準拠の暗号化が設定されている場合に発生する可能性があります。キーリングとキーがこの移行ガイドのガイドラインに従っていることを確認してください。
DSA は FIPS 準拠の暗号化ではないため、DSA 暗号化は許可されません。
FIPS 環境の暗号化で ECDSA または RSA PKCS v1.5 アルゴリズムは許可されなくなりました。これらのアルゴリズムで PGP Encrypt 操作を使用した場合、次のエラーが表示されます。
「RSA PKCS#1 v1.5 encryption disallowed (RSA PKCS#1 v1.5 暗号化は許可されません)」
「Can’t use ECDSA for encryption (暗号化で ECDSA は使用できません)」
「ElGamal KeyFactory not available (ElGamal KeyFactory は使用できません)」
PKCS#1 v1.5 を使用する RSA 暗号化も FIPS モードでは無効です。-Dorg.bouncycastle.rsa.allow_pkcs15_enc=true を使用してこれを再度有効化できますが、有効化しないで厳格な FIPS 準拠を維持できるようにしてください。これが必要であり、セキュリティの影響を理解している場合のみ、有効化してください。
特に Bouncy Castle FIPS をセキュリティプロバイダーとして使用している場合や、Mule アプリケーションを MuleSoft Government Cloud で実行している場合、同じキーペアを使用すると、次のエラーが表示される可能性があります。
org.mule.runtime.api.component.execution.ComponentExecutionException:
org.bouncycastle.crypto.IllegalKeyException: Attempt to sign/verify with RSA modulus already used for encrypt/decrypt
このため、Sign、Encrypt、および Decrypt 操作で異なるキーペアを使用します。
FIPS 対応の環境を使用する場合、PBEWith で始まるパスワードベースの暗号化 (PBE) アルゴリズムはセキュリティ制限のためサポートされなくなりました。例:
PBEWithSHA1AndRC2_40
PBEWithSHA1AndRC2_128
PBEWithSHA1AndRC4_128
PBEWithSHA1AndRC4_40
PBEWithMD5AndDES
PBEWithMD5AndTripleDES
PBEWithSHA1AndDESede
コンプライアンスを確保するには、FIPS モードのすべてのパスワードベースの暗号化実装が次のルールに従う必要があります。
パスワードは 16 文字以上にする必要があります。
すべての PBE 操作でパスワード SALT は必須です。このパスワードは 16 文字以上にする必要があります。さらに、セキュリティを強化するには、設定した操作ごとにパスワード SALT を変更する必要があります。
署名および検証の場合、デフォルトのアルゴリズムは PBKDF2withHmacSHA512 です。
暗号化または復号化の場合、デフォルトのアルゴリズムは PBKDF2withHmacSHA512AES256CBC__PKCS5Padding です。
FIPS 環境の JCE PBE 操作には、パスワード SALT と反復回数の両方が必要です。すべての PBE 操作でこれらの値を提供するようにモジュール設定を更新する必要があります。SALT と反復回数なしで暗号化されたデータがある場合は、次のオプションがあります。
FIPS モード外で復号化します。
com.mulesoft.crypto.allow-default-kdf-params システムプロパティを一時的に有効にして FIPS 内で復号化してから、新しい設定を使用して再度暗号化します。また、FIPS 環境で com.mulesoft.crypto.allow-sun-pbe-in-fips` システムプロパティを有効にして、SUN アルゴリズムの使用を許可する必要があります。
Cryptography Module バージョン 2.0.0 では、動的アルゴリズム定義がサポートされ、値プロバイダーに表示されている使用可能な値の定義済みリストの連動関係が削除されることで、柔軟性が向上します。
動的アルゴリズム定義は次の 2 つの方法で指定できます。
使用している環境の登録済みセキュリティプロバイダーで使用できる完全な変換文字列 (PBEWithHmacSHA256AndAES_128、PBEwithSHA1and3-KeyDESede など) として指定します。
バージョン 2.0.0 で導入されたカスタムアルゴリズム形式 (詳細は次のセクションを参照) として指定します。
Mule Runtime の Security.getProviders() リストに含まれないアルゴリズムでは、ランタイムエラーになります。必要に応じて、必要な暗号化プロバイダー (BouncyCastle FIPS、BC non-FIPS など) を Mule アプリケーションのクラスパスまたはセキュリティ設定に含めていることを確認してください。
|
特に FIPS 環境で、最新の暗号化設定の強化されたサポートを有効にするため、Cryptography Module 2.0.0 では、キー導出と暗号化コンポーネントを分離するカスタムアルゴリズム形式が導入されます。
形式:
PBKDF2withHmac<digest>AES<keyLength><mode>__<padding>
例:
PBKDF2withHmacSHA512AES256CBC__PKCS5Padding
この形式の機能:
FIPS で承認された暗号化プロファイルとの完全な互換性が確保されます。
キーの長さ、ブロックモード、パディングの明示的な定義が提供されます。
コネクタコードや Studio 設定を変更することなく将来の拡張に対応します。
4 つすべてのコンポーネントを定義する必要があります。デフォルトは想定されません。コンポーネントがないか無効な場合、検証は失敗します。
| コンポーネント | 説明 |
|---|---|
PBKDF2withHmac<digest> |
HMAC + SHA512 を使用するキー導出関数 (KDF) |
AES<keyLength> |
キーサイズ (128、192、256) を使用する暗号化アルゴリズム |
mode |
暗号化ブロックモード (CBC、GCM など) |
padding |
パディングスキーム (PKCS5Padding、NoPadding など) |
さらに、暗号化保証を強化するようにデフォルトのアルゴリズム値が更新されています。
| 操作 | デフォルト値、Cryptography Module バージョン 1.x | デフォルト値、Cryptography Module バージョン 2.x |
|---|---|---|
Encrypt または Decrypt |
|
|
Sign または Validate |
|
`PBKDF2withHmacSHA512 |
XML 署名を含む暗号化操作 (XML Sign、XML Encrypt、XML Decrypt、XML Validate など) には、XMLDSig セキュリティプロバイダー (org.jcp.xml.dsig.internal.dom.XMLDSigRI) が必要です。これは、通常は Apache Santuario により提供されます。
FIPS 準拠の環境では、より厳格なセキュリティポリシーのため、このプロバイダーはデフォルトでは使用できないまたは登録されていない場合があります。
これらの XML 関連暗号化操作を有効にするには、次のシステムプロパティを明示的に設定している場合、モジュールでプロバイダーを登録することができます。
-Dcom.mulesoft.connectors.allow-registration-of-xmldsig-provider-in-fips`
このアクションによりプロバイダーが JVM レベルで登録され、同じ JVM で実行されているすべての Mule アプリケーションでプロバイダーをグローバルに使用できるようになります。Mule アプリケーションで XML 署名または暗号化サポートを明示的に要求しており、プロバイダーがまだ存在しない場合のみ、この設定を使用します。
Cryptography Module バージョン 2.0 では、パスワードベースの暗号化操作で SALT パラメーターと iterationCount パラメーターの両方の設定が適用されるようになり、セキュリティが強化されます。
SALT と iterationCount が必須ではなかった Cryptography Module バージョン 1.x を使用して暗号化または署名されたデータが Mule アプリケーションで引き続き暗号化または検証されるようにするには、次のシステムプロパティをアクティブ化します。
com.mulesoft.crypto.allow-default-kdf-params=true
com.mulesoft.crypto.allow-sun-pbe-in-fips=true (only necessary when running in a FIPS-enabled environment)
これらのシステムプロパティをアクティブ化すると、次の条件下で互換モードが有効になります。
操作が Decrypt または Validate のいずれかである。
暗号化アルゴリズムが Sun の PBE スキーム (PBEWithHmacSHA1AndAES_128 など) に基づいている。
SALT または iterationCount のいずれのパラメーターも明示的に指定されていない (null または空)。
SALT または iterationCount のいずれかのパラメーターを指定した場合、モジュールはバージョン 2.x 互換を対象とし、操作を意図的に失敗させて整合性のない動作を回避します。
この互換モードは、既存のデータを処理するための一時的なソリューションとして意図されています。新規データのために、Cryptography Module バージョン 2.x で必要とされる SALT と iterationCount の両方を必ず設定して、最適なセキュリティと動作を実現してください。
セキュリティコンプライアンスを強化するには、FIPS モードで実行するすべての Mule アプリケーションで Bouncy Castle FIPS キーストア (BCFKS) 種別が必須です。既存の Java KeyStore (JKS) または Public-Key Cryptography Standards #12 (PKCS12) のキーストアとトラストストアを BCFKS に移行して、これらの新しいファイルを参照するように mule-cryptography-module 設定を更新する必要があります。
Bouncy Castle FIPS プロバイダーをダウンロードします。
curl -o $JAVA_HOME/jre/lib/ext/bc-fips-1.0.2.5.jar https://repo1.maven.org/maven2/org/bouncycastle/bc-fips/1.0.2.5/bc-fips-1.0.2.5.jar
JKS キーストアでは、次の keytool コマンドを実行します (<keystore_password> を現在のキーストアパスワードに置き換えて、必要に応じてファイルパスを調整します)。
sudo /absolute/path/to/keytool_command/keytool -importkeystore -srckeystore /absolut/path/to/your/keystore/keystore.jks -srcstoretype JKS -srcstorepass changeit -destkeystore /absolute/path/to/new/keystore/keystore.bcfks -storepass <keystore_password> -deststoretype BCFKS -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath /absolut/path/to/bcfips-1.0.2.5.jar
PKCS12 キーストアでは、現在のキーストアの形式が PKCS12 の場合、単に前のコマンドの -srcstoretype JKS を -srcstoretype PKCS12 に置き換えます。
| FIPS 環境では、JKS は証明書のみを保存でき、非公開鍵または秘密鍵を保持することはできません。Bouncy Castle FIPS では、JKS はデフォルトでは有効になっていません。JKS を使用するには、システムプロパティを設定して JKS を有効にします。 |
org.bouncycastle.jca.enable_jks=true`
JKS はデフォルトのキーストア種別ではなくなりました。このキーストア種別を明示的に選択する必要があります。FIPS 環境では、BCFKS が必要です。