Skip to content

Conversation

@navaneethsnair1
Copy link
Contributor

=== Limitations of the Beta release:
==== HTTP
* HTTP requests with content length greater than the maximum integer value fails due to internal limitations on request size with Netty.
* When the http option `maxKeepAliveRequests` has no limit, HTTP 1.1 limits pipelined requests to 50.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* When the http option `maxKeepAliveRequests` has no limit, HTTP 1.1 limits pipelined requests to 50.
* When the HTTP option `maxKeepAliveRequests` has no limit, HTTP 1.1 limits pipelined requests to 50.

==== HTTP
* HTTP requests with content length greater than the maximum integer value fails due to internal limitations on request size with Netty.
* When the http option `maxKeepAliveRequests` has no limit, HTTP 1.1 limits pipelined requests to 50.
* Http option `resetFramesWindow` is reduced from millisecond to second precision due to limitations in the Netty library.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Http option `resetFramesWindow` is reduced from millisecond to second precision due to limitations in the Netty library.
* HTTP option `resetFramesWindow` is reduced from millisecond to second precision due to limitations in the Netty library.

* Due to internal limitations of the Netty library, the http option `MessageSizeLimit` is now adjusted to be capped at the maximum integer value for HTTP/2.0 connections.
* Due to internal differences with Netty, the http option `ThrowIOEForInboundConnections` could behave differently from the Channel Framework implementation.
* Due to internal limitations of Netty, `acceptThread` and `waitToAccept` TCP options are currently not implemented and are ignored for the current Beta if set.
* As of the moment, clear text upgrade requests for HTTP 2.0 with request data is rejected with a 'Request Entity Too Large' status code. A fix is in progress.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* As of the moment, clear text upgrade requests for HTTP 2.0 with request data is rejected with a 'Request Entity Too Large' status code. A fix is in progress.
* Cleartext upgrade requests for HTTP 2.0 with request data are rejected with a 'Request Entity Too Large' status code. A fix is in progress.

[#aes256]
== Bring Your Own AES-256 Key

The *Bring Your Own AES-256 Key* feature allows you to provide a *Base64-encoded 256-bit AES key* for password encryption in Liberty.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The *Bring Your Own AES-256 Key* feature allows you to provide a *Base64-encoded 256-bit AES key* for password encryption in Liberty.
Liberty now allows you to provide a Base64-encoded 256-bit AES key for password encryption.

=== What’s New?
Previously, Liberty supported the `wlp.password.encryption.key` property, which accepted a password and derived an AES key through a computationally intensive process. This derivation involved repeated hashing with a salt over many iterations, which added overhead during server startup.

With *Bring Your Own AES-256 Key*, you can now supply a pre-generated AES key directly. This eliminates the derivation step, resulting in *faster startup times and improved runtime performance* when encrypting and decrypting passwords.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
With *Bring Your Own AES-256 Key*, you can now supply a pre-generated AES key directly. This eliminates the derivation step, resulting in *faster startup times and improved runtime performance* when encrypting and decrypting passwords.
Now you can now supply a pre-generated AES key directly. This eliminates the derivation step, resulting in faster startup times and improved runtime performance when encrypting and decrypting passwords.

With *Bring Your Own AES-256 Key*, you can now supply a pre-generated AES key directly. This eliminates the derivation step, resulting in *faster startup times and improved runtime performance* when encrypting and decrypting passwords.

=== Why It Matters
This feature not only improves performance but also prepares for *migration from traditional WebSphere (tWAS)*. The encoded password format remains the same, and future migration tools will allow you to export keys from tWAS for use in Liberty.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This feature not only improves performance but also prepares for *migration from traditional WebSphere (tWAS)*. The encoded password format remains the same, and future migration tools will allow you to export keys from tWAS for use in Liberty.
This feature not only improves performance but also prepares for migration from traditional WebSphere. The encoded password format remains the same, and future migration tools will allow you to export keys from traditional WebSphere for use in Liberty.

```bash
./securityUtility encode --encoding=aes --base64Key=<your_base64_key> <password>
```
* Specify an XML or properties file containing `wlp.aes.encryption.key` or `wlp.password.encryption.key`. *Note:* The aesKeyFile parameter now allows users to encode with either of the aes properties:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

aesKeyFile or aesConfigFile?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I confimed with the author and changes them, Thanks!


*Performance Tip:* For best results, re-encode all passwords using the new key. Mixed usage of old and new formats is supported for backward compatibility, but full migration ensures optimal performance.

Other command line tasks have been updated to accept base64 keys and aes configuration files in a similar fashion:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Other command line tasks have been updated to accept base64 keys and aes configuration files in a similar fashion:
Other command line tasks have been updated to accept Base64 keys and AES configuration files in a similar fashion:

* HTTP requests with content length greater than the maximum integer value fails due to internal limitations on request size with Netty.
* When the http option `maxKeepAliveRequests` has no limit, HTTP 1.1 limits pipelined requests to 50.
* Http option `resetFramesWindow` is reduced from millisecond to second precision due to limitations in the Netty library.
* Due to internal limitations of the Netty library, the http option `MessageSizeLimit` is now adjusted to be capped at the maximum integer value for HTTP/2.0 connections.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Due to internal limitations of the Netty library, the http option `MessageSizeLimit` is now adjusted to be capped at the maximum integer value for HTTP/2.0 connections.
* Due to internal limitations of the Netty library, the HTTP option `MessageSizeLimit` is now adjusted to be capped at the maximum integer value for HTTP/2.0 connections.

* When the http option `maxKeepAliveRequests` has no limit, HTTP 1.1 limits pipelined requests to 50.
* Http option `resetFramesWindow` is reduced from millisecond to second precision due to limitations in the Netty library.
* Due to internal limitations of the Netty library, the http option `MessageSizeLimit` is now adjusted to be capped at the maximum integer value for HTTP/2.0 connections.
* Due to internal differences with Netty, the http option `ThrowIOEForInboundConnections` could behave differently from the Channel Framework implementation.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Due to internal differences with Netty, the http option `ThrowIOEForInboundConnections` could behave differently from the Channel Framework implementation.
* Due to internal differences with Netty, the HTTP option `ThrowIOEForInboundConnections` could behave differently from the Channel Framework implementation.

@navaneethsnair1 navaneethsnair1 merged commit 9b9f535 into prod Nov 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants