Success! Thank you David.
Now I'm more confident to upgrade the entire cluster. Cheers!
-Joe
On 7/20/2021 3:08 PM, David Handermann wrote:
Joe,
Thanks for the comparison, that is helpful. The
set-sensitive-properties-key command is attempting to decrypt the
existing flow.xml.gz using the current value of
nifi.sensitive.props.key in nifi.properties. If you did not
previously have a value set for this property in version 1.13.2, NiFi
used an internal default key.
If you remove the value for nifi.sensitive.props.key, leaving it blank
in nifi.properties, the set-sensitive-properties-key command will use
the internal default key to read the existing flow.xml.gz.
Can you try removing the value for nifi.sensitive.props.key and
running the set-sensitive-props-key command again? Make sure to have
the PBE value set for nifi.sensitive.props.algorithm.
Regards,
David Handermann
On Tue, Jul 20, 2021 at 1:59 PM Joe Obernberger
<[email protected]> wrote:
Hmm - with:
nifi.sensitive.props.algorithm=PBEWITHMD5AND256BITAES-CBC-OPENSSL
I get the following when running "./nifi.sh
set-sensitive-properties-key 12characterpassword"
NiFi Properties Processed
[/data/1/joeo/nifi-1.14.0/conf/nifi.properties]
Failed to process Flow Configuration [./conf/flow.xml.gz]
org.apache.nifi.encrypt.EncryptionException: Decryption Failed
with Algorithm [PBEWITHMD5AND256BITAES-CBC-OPENSSL]
at
org.apache.nifi.encrypt.CipherPropertyEncryptor.decrypt(CipherPropertyEncryptor.java:78)
at
org.apache.nifi.flow.encryptor.StandardFlowEncryptor.getOutputEncrypted(StandardFlowEncryptor.java:71)
at
org.apache.nifi.flow.encryptor.StandardFlowEncryptor.lambda$processFlow$0(StandardFlowEncryptor.java:57)
at
java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at
java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at
java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
at
org.apache.nifi.flow.encryptor.StandardFlowEncryptor.processFlow(StandardFlowEncryptor.java:54)
at
org.apache.nifi.flow.encryptor.command.SetSensitivePropertiesKey.processFlowConfiguration(SetSensitivePropertiesKey.java:112)
at
org.apache.nifi.flow.encryptor.command.SetSensitivePropertiesKey.run(SetSensitivePropertiesKey.java:97)
at
org.apache.nifi.flow.encryptor.command.SetSensitivePropertiesKey.main(SetSensitivePropertiesKey.java:72)
Caused by: javax.crypto.BadPaddingException: pad block corrupted
at
org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$BufferedGenericBlockCipher.doFinal(Unknown
Source)
at
org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown
Source)
at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2202)
at
org.apache.nifi.encrypt.CipherPropertyEncryptor.decrypt(CipherPropertyEncryptor.java:74)
If I change to:
nifi.sensitive.props.algorithm=NIFI_PBKDF2_AES_GCM_256
I get:
NiFi Properties Processed
[/data/1/joeo/nifi-1.14.0/conf/nifi.properties]
Failed to process Flow Configuration [./conf/flow.xml.gz]
org.apache.nifi.encrypt.EncryptionException: Decryption Failed
with Algorithm [AES/GCM/NoPadding]
at
org.apache.nifi.encrypt.CipherPropertyEncryptor.decrypt(CipherPropertyEncryptor.java:78)
at
org.apache.nifi.flow.encryptor.StandardFlowEncryptor.getOutputEncrypted(StandardFlowEncryptor.java:71)
at
org.apache.nifi.flow.encryptor.StandardFlowEncryptor.lambda$processFlow$0(StandardFlowEncryptor.java:57)
at
java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at
java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at
java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
at
org.apache.nifi.flow.encryptor.StandardFlowEncryptor.processFlow(StandardFlowEncryptor.java:54)
at
org.apache.nifi.flow.encryptor.command.SetSensitivePropertiesKey.processFlowConfiguration(SetSensitivePropertiesKey.java:112)
at
org.apache.nifi.flow.encryptor.command.SetSensitivePropertiesKey.run(SetSensitivePropertiesKey.java:97)
at
org.apache.nifi.flow.encryptor.command.SetSensitivePropertiesKey.main(SetSensitivePropertiesKey.java:72)
Caused by: javax.crypto.AEADBadTagException: mac check in GCM failed
at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at
org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$AEADGenericBlockCipher.doFinal(Unknown
Source)
at
org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown
Source)
at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2202)
at
org.apache.nifi.encrypt.CipherPropertyEncryptor.decrypt(CipherPropertyEncryptor.java:74)
-Joe
On 7/20/2021 1:39 PM, David Handermann wrote:
Joe,
You're welcome! It looks like there is still a configuration
problem based on the inability to read the flow.xml.gz.
With the existing flow.xml.gz in the conf directory, did you try
running the set-sensitive-properties-key command after setting
the PBE value for the sensitive properties algorithm in
nifi.properties?
Regards,
David Handermann
On Tue, Jul 20, 2021 at 12:32 PM Joe Obernberger
<[email protected]> wrote:
Thank you David - your help is great!
I've removed the 1.14.0 node from the cluster and it fires up
OK without a flow file (can access the UI). If I put the
flow from the 1.13.2 version there, I get this error:
2021-07-20 13:31:06,929 WARN [main]
org.apache.nifi.web.server.JettyServer Failed to start web
server... shutting down.
org.apache.nifi.encrypt.EncryptionException: Decryption
Failed with Algorithm [AES/GCM/NoPadding]
at
org.apache.nifi.encrypt.CipherPropertyEncryptor.decrypt(CipherPropertyEncryptor.java:78)
at
org.apache.nifi.fingerprint.FingerprintFactory.decrypt(FingerprintFactory.java:935)
at
org.apache.nifi.fingerprint.FingerprintFactory.getLoggableRepresentationOfSensitiveValue(FingerprintFactory.java:550)
at
org.apache.nifi.fingerprint.FingerprintFactory.access$200(FingerprintFactory.java:71)
at
org.apache.nifi.fingerprint.FingerprintFactory$6.compare(FingerprintFactory.java:837)
at
org.apache.nifi.fingerprint.FingerprintFactory$6.compare(FingerprintFactory.java:830)
at
java.base/java.util.TimSort.binarySort(TimSort.java:296)
at java.base/java.util.TimSort.sort(TimSort.java:239)
at java.base/java.util.Arrays.sort(Arrays.java:1515)
at
java.base/java.util.ArrayList.sort(ArrayList.java:1750)
at
java.base/java.util.Collections.sort(Collections.java:179)
at
org.apache.nifi.fingerprint.FingerprintFactory.sortElements(FingerprintFactory.java:879)
at
org.apache.nifi.fingerprint.FingerprintFactory.addFlowFileProcessorFingerprint(FingerprintFactory.java:486)
at
org.apache.nifi.fingerprint.FingerprintFactory.addProcessGroupFingerprint(FingerprintFactory.java:368)
at
org.apache.nifi.fingerprint.FingerprintFactory.addProcessGroupFingerprint(FingerprintFactory.java:396)
at
org.apache.nifi.fingerprint.FingerprintFactory.addFlowControllerFingerprint(FingerprintFactory.java:226)
at
org.apache.nifi.fingerprint.FingerprintFactory.createFingerprint(FingerprintFactory.java:168)
at
org.apache.nifi.fingerprint.FingerprintFactory.createFingerprint(FingerprintFactory.java:142)
at
org.apache.nifi.controller.inheritance.FlowFingerprintCheck.checkInheritability(FlowFingerprintCheck.java:45)
at
org.apache.nifi.controller.StandardFlowSynchronizer.sync(StandardFlowSynchronizer.java:206)
at
org.apache.nifi.controller.FlowController.synchronize(FlowController.java:1469)
at
org.apache.nifi.persistence.StandardXMLFlowConfigurationDAO.load(StandardXMLFlowConfigurationDAO.java:89)
at
org.apache.nifi.controller.StandardFlowService.loadFromBytes(StandardFlowService.java:810)
at
org.apache.nifi.controller.StandardFlowService.load(StandardFlowService.java:539)
at
org.apache.nifi.web.contextlistener.ApplicationStartupContextListener.contextInitialized(ApplicationStartupContextListener.java:67)
at
org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:1068)
at
org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:572)
at
org.eclipse.jetty.server.handler.ContextHandler.contextInitialized(ContextHandler.java:997)
at
org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:746)
at
org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379)
at
org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1449)
at
org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1414)
at
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:911)
at
org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
at
org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
at
org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:426)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
at org.eclipse.jetty.server.Server.start(Server.java:423)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
at
org.eclipse.jetty.server.Server.doStart(Server.java:387)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at
org.apache.nifi.web.server.JettyServer.start(JettyServer.java:1129)
at org.apache.nifi.NiFi.<init>(NiFi.java:159)
at org.apache.nifi.NiFi.<init>(NiFi.java:71)
at org.apache.nifi.NiFi.main(NiFi.java:303)
Caused by: javax.crypto.AEADBadTagException: mac check in GCM
failed
at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at
org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$AEADGenericBlockCipher.doFinal(Unknown
Source)
at
org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown
Source)
at
java.base/javax.crypto.Cipher.doFinal(Cipher.java:2202)
at
org.apache.nifi.encrypt.CipherPropertyEncryptor.decrypt(CipherPropertyEncryptor.java:74)
... 62 common frames omitted
-Joe
On 7/20/2021 1:06 PM, David Handermann wrote:
Joe,
When upgrading from a previous version of NiFi with the
default settings, you should use
PBEWITHMD5AND256BITAES-CBC-OPENSSL for
nifi.sensitive.props.algorithm.
If you did not previously have a Sensitive Properties Key
configured for nifi.sensitive.props.key in nifi.properties,
you can run the following command to set a new Sensitive
Properties Key.
./bin/nifi.sh set-sensitive-properties-key
NewSensitivePropertiesKey
Replace /NewSensitivePropertiesKey /with a randomly
generated string of at least 12 characters.
You will need to run this command on all cluster nodes,
using the same key, to ensure that all nodes share the same
configuration.
Please pass along any stack traces if NiFi does not startup
after making those changes.
Regards,
David Handermann
On Tue, Jul 20, 2021 at 11:54 AM Joe Obernberger
<[email protected]> wrote:
Thank you David.
If my prior flow was not encrypted, what do I set the
nifi.sensitive.props.algorithm to? I've tried
NIFI_PBKDF2_AES_GCM_256, and
PBEWITHMD5AND256BITAES-CBC-OPENSSL.
-Joe
On 7/20/2021 10:44 AM, David Handermann wrote:
Hi Joe,
Thanks for following up. NiFi supports encryption at
different levels, and always implements some form of
encryption for sensitive processor properties. Using
the previous value for nifi.sensitive.props.algorithm
should allow NiFi 1.14.0 to load the existing
flow.xml.gz, but it sounds like some additional
configuration changes are necessary.
All cluster nodes should be running the same version of
NiFi, but if your cluster was not previously configured
to communicate over HTTPS, then you have two options.
The first option is to configure all cluster nodes for
HTTP communication. You should be able to use the
nifi.web.http properties from your current
nifi.properties file to continue running with HTTP on
NiFi 1.14.0. The second option is to configure all
cluster nodes for HTTPS communication. This involves
generating or obtaining unique certificates from a
trusted certificate authority for each cluster node.
The current NiFi documentation includes a guide on
secure cluster configuration using the TLS Toolkit:
https://nifi.apache.org/docs/nifi-docs/html/walkthroughs.html#creating-and-securing-a-nifi-cluster-with-the-tls-toolkit
The certificate generated in NiFi 1.14.0 is only
suitable for standalone deployments. As a self-signed
certificate, it is not intended to be used for
clustered configurations, so existing documentation on
configuring a secure cluster provides the recommended
approach.
Regards,
David Handermann
On Tue, Jul 20, 2021 at 9:31 AM Joe Obernberger
<[email protected]> wrote:
Thank you David. I tried the new setting, but no
go. I'm sure this is user error on my end; my old
flow file was not encrypted with 1.13.2, but not
sure how to bring it over.
Can Nifi 1.14.x run in the same cluster as 1.13.x?
If I delete the flow file, NiFi runs, but doesn't
join the cluster.
"Failed marshalling 'CONNECTION_REQUEST' protocol
message due to:
javax.net.ssl.SSLHandshakeException: Remote host
terminated the handshake"
When I try to connect via a browser (now port
8443), the browser presents a list of
certificates. Where can I find the 60 day
self-signed certificate to import?
-Joe
On 7/19/2021 8:15 PM, David Handermann wrote:
Hi Joe,
Thanks for providing the stack trace associated
with the startup failure. The problem is related
to decryption of sensitive property values stored
in the flow.xml.gz configuration.
Can you provide the value of the following
property from your nifi.properties file?
nifi.sensitive.props.algorithm
In version 1.13.2, the default value was
PBEWITHMD5AND256BITAES-CBC-OPENSSL. In version
1.14.0 the new default value is
NIFI_PBKDF2_AES_GCM_256.
Based on the error message, the configured value
appears to be NIFI_PBKDF2_AES_GCM_256, or one of
the other AES_GCM options. However, when upgrading
from an existing flow.xml.gz, this property needs
to be the exact same value used prior to upgrading.
Can you try changing
nifi.sensitive.props.algorithm to
PBEWITHMD5AND256BITAES-CBC-OPENSSL?
Regards,
David Handermann
On Mon, Jul 19, 2021 at 6:50 PM Joe Obernberger
<[email protected]> wrote:
Trying to go from 1.13.2 to 1.14.0, but am
getting this error:
2021-07-19 19:47:36,953 WARN [main]
org.apache.nifi.web.server.JettyServer Failed
to start web server...
shutting down.
org.apache.nifi.encrypt.EncryptionException:
Decryption Failed with
Algorithm [AES/GCM/NoPadding]
at
org.apache.nifi.encrypt.CipherPropertyEncryptor.decrypt(CipherPropertyEncryptor.java:78)
at
org.apache.nifi.fingerprint.FingerprintFactory.decrypt(FingerprintFactory.java:935)
at
org.apache.nifi.fingerprint.FingerprintFactory.getLoggableRepresentationOfSensitiveValue(FingerprintFactory.java:550)
at
org.apache.nifi.fingerprint.FingerprintFactory.access$200(FingerprintFactory.java:71)
at
org.apache.nifi.fingerprint.FingerprintFactory$6.compare(FingerprintFactory.java:837)
at
org.apache.nifi.fingerprint.FingerprintFactory$6.compare(FingerprintFactory.java:830)
at
java.base/java.util.TimSort.binarySort(TimSort.java:296)
at
java.base/java.util.TimSort.sort(TimSort.java:239)
at
java.base/java.util.Arrays.sort(Arrays.java:1515)
at
java.base/java.util.ArrayList.sort(ArrayList.java:1750)
at
java.base/java.util.Collections.sort(Collections.java:179)
at
org.apache.nifi.fingerprint.FingerprintFactory.sortElements(FingerprintFactory.java:879)
at
org.apache.nifi.fingerprint.FingerprintFactory.addFlowFileProcessorFingerprint(FingerprintFactory.java:486)
at
org.apache.nifi.fingerprint.FingerprintFactory.addProcessGroupFingerprint(FingerprintFactory.java:368)
at
org.apache.nifi.fingerprint.FingerprintFactory.addProcessGroupFingerprint(FingerprintFactory.java:396)
at
org.apache.nifi.fingerprint.FingerprintFactory.addFlowControllerFingerprint(FingerprintFactory.java:226)
at
org.apache.nifi.fingerprint.FingerprintFactory.createFingerprint(FingerprintFactory.java:168)
at
org.apache.nifi.fingerprint.FingerprintFactory.createFingerprint(FingerprintFactory.java:142)
at
org.apache.nifi.controller.inheritance.FlowFingerprintCheck.checkInheritability(FlowFingerprintCheck.java:45)
at
org.apache.nifi.controller.StandardFlowSynchronizer.sync(StandardFlowSynchronizer.java:206)
at
org.apache.nifi.controller.FlowController.synchronize(FlowController.java:1469)
at
org.apache.nifi.persistence.StandardXMLFlowConfigurationDAO.load(StandardXMLFlowConfigurationDAO.java:89)
at
org.apache.nifi.controller.StandardFlowService.loadFromBytes(StandardFlowService.java:810)
at
org.apache.nifi.controller.StandardFlowService.load(StandardFlowService.java:458)
at
org.apache.nifi.web.server.JettyServer.start(JettyServer.java:1206)
at
org.apache.nifi.NiFi.<init>(NiFi.java:159)
at
org.apache.nifi.NiFi.<init>(NiFi.java:71)
at
org.apache.nifi.NiFi.main(NiFi.java:303)
Caused by: javax.crypto.AEADBadTagException:
mac check in GCM failed
at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at
org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$AEADGenericBlockCipher.doFinal(Unknown
Source)
at
org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown
Source)
at
java.base/javax.crypto.Cipher.doFinal(Cipher.java:2202)
at
org.apache.nifi.encrypt.CipherPropertyEncryptor.decrypt(CipherPropertyEncryptor.java:74)
... 27 common frames omitted
2021-07-19 19:47:36,953 INFO [Thread-0]
org.apache.nifi.NiFi Initiating
shutdown of Jetty web server...
Any ideas?
Thank you!
-Joe
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
Virus-free. www.avg.com
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
<#m_-6489089890881867919_m_4246844977010755397_m_1841351089320358696_m_803060838424769034_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>