This is an automated email from the ASF dual-hosted git repository.

thenatog pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new ed4d4d5  NIFI-9016 Added BCFKS KeyStoreKeyProvider examples to User 
Guide
ed4d4d5 is described below

commit ed4d4d59388ebedd9df17c9c457130b8764e4624
Author: exceptionfactory <[email protected]>
AuthorDate: Thu Aug 5 17:00:28 2021 -0500

    NIFI-9016 Added BCFKS KeyStoreKeyProvider examples to User Guide
    
    Signed-off-by: Nathan Gough <[email protected]>
    
    This closes #5285.
---
 nifi-docs/src/main/asciidoc/user-guide.adoc | 115 +++++++++++++---------------
 1 file changed, 52 insertions(+), 63 deletions(-)

diff --git a/nifi-docs/src/main/asciidoc/user-guide.adoc 
b/nifi-docs/src/main/asciidoc/user-guide.adoc
index e7b398b..6c9b2bb 100644
--- a/nifi-docs/src/main/asciidoc/user-guide.adoc
+++ b/nifi-docs/src/main/asciidoc/user-guide.adoc
@@ -2935,32 +2935,19 @@ 
key5=c6FzfnKm7UR7xqI2NFpZ+fEKBfSU7+1NvRw+XWQ9U39MONWqk5gvoyOCdFR1kUgeg46jrN5dGXk
 Each line defines a key ID and then the Base64-encoded cipher text of a 16 
byte IV and wrapped AES-128, AES-192, or AES-256 key depending on the JCE 
policies available. The individual keys are wrapped by AES/GCM encryption using 
the **root key** defined by `nifi.bootstrap.sensitive.key` in 
_conf/bootstrap.conf_.
 
 ===== KeyStoreKeyProvider
-The `KeyStoreKeyProvider` implementation reads from a standard 
`java.security.KeyStore` using the configured password to load AES Secret Key 
entries.
 
-The provider supports the following Keystore Types:
+See <<secret-key-generation-and-storage-using-keytool>> for details on 
generating and storing an AES Secret Key for use with the `KeyStoreKeyProvider`.
 
-* BCFKS
-* PKCS12
-
-The keystore filename extension must be either `.p12` indicating PKCS12 or 
`.bcfks` indicating BCFKS.
-
-The `keytool` command can be used to generate an AES-256 Secret Key stored in 
a PKCS12 file for repository encryption:
-
-...
-keytool -genseckey -alias primary-key -keyalg AES -keysize 256 -keystore 
repository.p12 -storetype PKCS12
-...
+The following configuration properties support using a PKCS12 keystore with a 
Secret Key:
 
-Enter a keystore password when prompted. The same value must be used for both 
the keystore password and key password.
-The keystore password will be used in the provider configuration properties.
+  
nifi.provenance.repository.encryption.key.provider.implementation=org.apache.nifi.security.kms.KeyStoreKeyProvider
+  
nifi.provenance.repository.encryption.key.provider.location=./conf/repository.p12
+  nifi.provenance.repository.encryption.key.provider.password=KEYSTORE_PASSWORD
+  nifi.provenance.repository.encryption.key.id=primary-key
 
-The following configuration properties support using a PKCS12 keystore with a 
Secret Key:
+The same configuration can be used with a BCFKS keystore using a different 
location property:
 
-...
-nifi.provenance.repository.encryption.key.provider.implementation=org.apache.nifi.security.kms.KeyStoreKeyProvider
-nifi.provenance.repository.encryption.key.provider.location=./conf/repository.p12
-nifi.provenance.repository.encryption.key.provider.password=KEYSTORE_PASSWORD
-nifi.provenance.repository.encryption.key.id=primary-key
-...
+  
nifi.provenance.repository.encryption.key.provider.location=./conf/repository.bcfks
 
 [[provenance-repository-key-rotation]]
 ===== Key Rotation
@@ -3042,32 +3029,19 @@ 
key5=c6FzfnKm7UR7xqI2NFpZ+fEKBfSU7+1NvRw+XWQ9U39MONWqk5gvoyOCdFR1kUgeg46jrN5dGXk
 Each line defines a key ID and then the Base64-encoded cipher text of a 16 
byte IV and wrapped AES-128, AES-192, or AES-256 key depending on the JCE 
policies available. The individual keys are wrapped by AES/GCM encryption using 
the **root key** defined by `nifi.bootstrap.sensitive.key` in 
_conf/bootstrap.conf_.
 
 ==== KeyStoreKeyProvider
-The `KeyStoreKeyProvider` implementation reads from a standard 
`java.security.KeyStore` using the configured password to load AES Secret Key 
entries.
 
-The provider supports the following Keystore Types:
+See <<secret-key-generation-and-storage-using-keytool>> for details on 
generating and storing an AES Secret Key for use with the `KeyStoreKeyProvider`.
 
-* BCFKS
-* PKCS12
-
-The keystore filename extension must be either `.p12` indicating PKCS12 or 
`.bcfks` indicating BCFKS.
-
-The `keytool` command can be used to generate an AES-256 Secret Key stored in 
a PKCS12 file for repository encryption:
-
-...
-keytool -genseckey -alias primary-key -keyalg AES -keysize 256 -keystore 
repository.p12 -storetype PKCS12
-...
+The following configuration properties support using a PKCS12 keystore with a 
Secret Key:
 
-Enter a keystore password when prompted. The same value must be used for both 
the keystore password and key password.
-The keystore password will be used in the provider configuration properties.
+  
nifi.content.repository.encryption.key.provider.implementation=org.apache.nifi.security.kms.KeyStoreKeyProvider
+  
nifi.content.repository.encryption.key.provider.location=./conf/repository.p12
+  nifi.content.repository.encryption.key.provider.password=KEYSTORE_PASSWORD
+  nifi.content.repository.encryption.key.id=primary-key
 
-The following configuration properties support using a PKCS12 keystore with a 
Secret Key:
+The same configuration can be used with a BCFKS keystore using a different 
location property:
 
-...
-nifi.content.repository.encryption.key.provider.implementation=org.apache.nifi.security.kms.KeyStoreKeyProvider
-nifi.content.repository.encryption.key.provider.location=./conf/repository.p12
-nifi.content.repository.encryption.key.provider.password=KEYSTORE_PASSWORD
-nifi.content.repository.encryption.key.id=primary-key
-...
+  
nifi.content.repository.encryption.key.provider.location=./conf/repository.bcfks
 
 .Data Protection vs. Key Protection
 ****
@@ -3156,32 +3130,19 @@ 
key5=c6FzfnKm7UR7xqI2NFpZ+fEKBfSU7+1NvRw+XWQ9U39MONWqk5gvoyOCdFR1kUgeg46jrN5dGXk
 Each line defines a key ID and then the Base64-encoded cipher text of a 16 
byte IV and wrapped AES-128, AES-192, or AES-256 key depending on the JCE 
policies available. The individual keys are wrapped by AES/GCM encryption using 
the **root key** defined by `nifi.bootstrap.sensitive.key` in 
_conf/bootstrap.conf_.
 
 ==== KeyStoreKeyProvider
-The `KeyStoreKeyProvider` implementation reads from a standard 
`java.security.KeyStore` using the configured password to load AES Secret Key 
entries.
-
-The provider supports the following Keystore Types:
-
-* BCFKS
-* PKCS12
 
-The keystore filename extension must be either `.p12` indicating PKCS12 or 
`.bcfks` indicating BCFKS.
+See <<secret-key-generation-and-storage-using-keytool>> for details on 
generating and storing an AES Secret Key for use with the `KeyStoreKeyProvider`.
 
-The `keytool` command can be used to generate an AES-256 Secret Key stored in 
a PKCS12 file for repository encryption:
+The following configuration properties support using a PKCS12 keystore with a 
Secret Key:
 
-...
-keytool -genseckey -alias primary-key -keyalg AES -keysize 256 -keystore 
repository.p12 -storetype PKCS12
-...
+  
nifi.flowfile.repository.encryption.key.provider.implementation=org.apache.nifi.security.kms.KeyStoreKeyProvider
+  
nifi.flowfile.repository.encryption.key.provider.location=./conf/repository.p12
+  nifi.flowfile.repository.encryption.key.provider.password=KEYSTORE_PASSWORD
+  nifi.flowfile.repository.encryption.key.id=primary-key
 
-Enter a keystore password when prompted. The same value must be used for both 
the keystore password and key password.
-The keystore password will be used in the provider configuration properties.
+The same configuration can be used with a BCFKS keystore using a different 
location property:
 
-The following configuration properties support using a PKCS12 keystore with a 
Secret Key:
-
-...
-nifi.flowfile.repository.encryption.key.provider.implementation=org.apache.nifi.security.kms.KeyStoreKeyProvider
-nifi.flowfile.repository.encryption.key.provider.location=./conf/repository.p12
-nifi.flowfile.repository.encryption.key.provider.password=KEYSTORE_PASSWORD
-nifi.flowfile.repository.encryption.key.id=primary-key
-...
+  
nifi.flowfile.repository.encryption.key.provider.location=./conf/repository.bcfks
 
 [[flowfile-repository-key-rotation]]
 ==== Key Rotation
@@ -3198,6 +3159,34 @@ During swaps and recoveries, the flowfile records are 
deserialized and reseriali
 
 Within the NiFi UI/API, there is no detectable difference between an encrypted 
and unencrypted flowfile repository. All framework interactions with flowfiles 
work as expected with no change to the process.
 
+[[secret-key-generation-and-storage-using-keytool]]
+=== Secret Key Generation and Storage using Keytool
+
+The `KeyStoreKeyProvider` supports reading from a `java.security.KeyStore` 
using a configured password to load AES Secret Key entries.
+The `KeyStoreKeyProvider` can be configured with any of the encrypted 
repository implementations.
+
+The provider supports the following KeyStore Types:
+
+* BCFKS
+* PKCS12
+
+The keystore filename extension must be either `.p12` indicating PKCS12 or 
`.bcfks` indicating BCFKS.
+
+The `keytool` command can be used to generate an AES-256 Secret Key stored in 
a PKCS12 file for repository encryption:
+
+  keytool -genseckey -alias primary-key -keyalg AES -keysize 256 -keystore 
repository.p12 -storetype PKCS12
+
+The `keytool` command requires additional arguments specifying the 
BouncyCastle Security Provider to store
+Secret Keys using BCFKS. The arguments must include a reference to the 
BouncyCastle Security Provider library, which
+is available in the `lib/bootstrap` directory under the NiFi installation.
+
+The following command can be used to generate an AES-256 Secret Key stored 
using BCFKS:
+
+  keytool -genseckey -alias primary-key -keyalg AES -keysize 256 -keystore 
repository.bcfks -storetype BCFKS -providerclass 
org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath 
lib/bootstrap/bcprov-jdk15on-*.jar
+
+Enter a keystore password when prompted. The same value must be used for both 
the keystore password and key password.
+The keystore password will be used in the provider configuration properties.
+
 === Potential Issues
 
 [WARNING]

Reply via email to