[ 
https://issues.apache.org/jira/browse/NIFI-14001?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17899537#comment-17899537
 ] 

ASF subversion and git services commented on NIFI-14001:
--------------------------------------------------------

Commit e33cbe6df5fc4976242f300b0b43ff012a152f9e in nifi's branch 
refs/heads/main from David Handermann
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=e33cbe6df5 ]

NIFI-14001 Added Framework Support for PEM Keys and Certificates (#9517)



> Add Framework Support for PEM Keys and Certificates
> ---------------------------------------------------
>
>                 Key: NIFI-14001
>                 URL: https://issues.apache.org/jira/browse/NIFI-14001
>             Project: Apache NiFi
>          Issue Type: New Feature
>          Components: Core Framework
>            Reporter: David Handermann
>            Assignee: David Handermann
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> NiFi application properties include support for JKS and PKCS12 Key Store 
> types, as well as BCFKS, aligning with standard Java capabilities for key and 
> certificate information. These types provide some amount of password 
> protection for entries, based on Java version and underlying format 
> capabilities. The level of security that password protection provides is 
> variable, depending on the Key Store implementation and Java system 
> properties.
> The historical Privacy Enhanced Mail (PEM) format defined in [RFC 
> 1421|https://www.rfc-editor.org/rfc/rfc1421] supports representing keys and 
> certificates as Base64-encoded binary with standard headers and footers. 
> Standard Java classes are capable of reading PEM keys and certificates with 
> some amount of parsing, depending on the particular type of file in question.
> In addition to existing Key Store types, NiFi application properties should 
> support using PEM files for mutual TLS communication. Supporting PEM files 
> avoids the need for converting to PKCS12 or other formats, and also avoids 
> the need for maintaining passwords required to read Key Store files.
> Initial PEM file support should include building a Key Store from individual 
> Private Key and Certificate Chain files, and should include building a Trust 
> Store from a Certificate Chain file containing one or more Certificates.
> Private Key support should include the following formats and algorithms:
>  - PKCS1 for RSA
>  - PKCS8 for RSA, Ed25519, or ECDSA with NIST curves P-256, P-384, and P-521
> PKCS1 Private Keys have the header {{BEGIN RSA PRIVATE KEY}} and PKCS8 
> Private Keys have the header {{{}BEGIN PRIVATE KEY{}}}.
> These formats and algorithms align with current modern algorithm 
> recommendations and usage patterns, such as [Let's Encrypt Supported Key 
> Algorithms|https://letsencrypt.org/docs/integration-guide/#supported-key-algorithms].
> Certificate support should include reading standard X.509 files with the 
> {{BEGIN CERTIFICATE}} header.
> For disambiguation from existing formats, the {{keystoreType}} and 
> {{truststoreType}} should take a new value named {{{}PEM{}}}.
> For loading the Key Store, the {{PEM}} type should trigger loading two new 
> properties named:
>  - nifi.security.keystore.privateKey
>  - nifi.security.keystore.certificate
> This approach provides clear separation between the private key and 
> certificate chain, while maintaining the association through the root name of 
> both properties.
> For loading the Trust Store, the {{PEM}} type should trigger loading one new 
> property named:
>  - nifi.security.truststore.certificate
> The initial implementation should maintain compatibility with existing 
> properties and prefer existing properties when defined.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to