Skip to content

DOCS-6412 Fix TDE fundamentals instruction steps - #859

Merged
mariadb-stefan-hinz merged 1 commit into
mainfrom
DOCS-6412-tde-fundamentals-steps
Sep 15, 2026
Merged

mariadb-stefan-hinz merged 1 commit into
mainfrom
DOCS-6412-tde-fundamentals-steps

Conversation

@mariadb-stefan-hinz

@mariadb-stefan-hinz mariadb-stefan-hinz commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Fixes DOCS-6412, reported by Hartmut Holzgraefe after a customer failed to enable TDE by following the page.

What was wrong

# Issue Fix
1 The key file tabs led with the Enterprise Server format, so a 10.6 customer used 1;1; and the server refused to start Label tabs by version, put the widely applicable one first, warn that the wrong format is a hard startup failure. Same labels applied on the plugin page, which used three different spellings
2 The config snippet referenced keyfile.key (an encrypted key file) that step 1 never created Link Encrypting the Key File, and clarify that keyfile.key holds the encryption password
3 innodb_encryption_threads was never set, so existing tables were never converted and the monitoring steps had nothing to show Set it in the enable step, note it in the disable step, add the missing Monitor encryption progress step
4 UNINSTALL SONAME returns Plugin is busy and will be uninstalled on shutdown, undocumented Show the warning and explain it's expected
5 The walkthrough set file_key_management_encryption_algorithm = AES_CTR Removed; replaced with a warning about what that choice costs

Fact-check notes

Each claim was verified against mariadb-server @ a217e1000f3 (13.0.1). Two places where I diverged from the ticket:

innodb_encrypt_tables=FORCE — not adopted. The ticket suggests FORCE instead of ON "so that existing tables get encrypted in the background already". That isn't what FORCE does. should_encrypt() treats both as truthy for default-mode tablespaces, so background conversion depends on the threads, not on ON vs FORCE. What FORCE actually adds is rejecting ENCRYPTED=NO (ha_innodb.cc:11490) — which would break this page's own Manual Control: Disabling Encryption section further down. So I fixed the real cause (threads) and documented FORCE as the policy control it is.

The wolfSSL restriction is version-specific. Both pages stated unconditionally that AES_CTR requires OpenSSL. That flipped in commit f94d467d326 ("enable AES-CTR with wolfssl"), first released in 11.2.1cmake/ssl.cmake sets HAVE_EncryptAes128Ctr ON for bundled wolfSSL on main, versus OFF on 10.6-enterprise. So the ticket's version of this claim is right for ES 10.6 but wrong for every current Community Server release. Qualified by version rather than deleted.

The plugin lock-in half of the AES_CTR concern is confirmed and was undocumented: HashiCorp and AWS KMS pass 0 for all five crypt entry points, so the server falls back to a hard-coded MY_AES_CBC path (sql/encryption.cc:46). Data written under AES_CTR is unreadable after switching. That's the same trap as MDEV-40657.

Checks

doc-lint.sh (codespell + lychee + includes) passes. New heading anchors and relative link targets verified by hand, since lychee doesn't check fragments.

🤖 Generated with Claude Code

The walkthrough had gaps that made customers fail at it:

- The version-specific key file tabs led with the Enterprise Server
  format, so a 10.6 user picked it and the server refused to start with
  "Invalid key". Label the tabs by version, put the widely applicable
  one first, and warn that the wrong format is a startup failure.
- The config snippet referenced an encrypted key file that the previous
  step never created. Point at Encrypting the Key File, and clarify that
  keyfile.key holds the encryption password, not a key.
- innodb_encryption_threads was never set, and it defaults to 0, so
  existing tables were never converted and both monitoring steps had
  nothing to report. Set it in the enable step, note it in the disable
  step, and add the missing "Monitor encryption progress" step.
- UNINSTALL SONAME always warns "Plugin is busy and will be uninstalled
  on shutdown", because the server holds a reference to the active
  encryption plugin. Document it as expected.
- Drop AES_CTR from the walkthrough and warn about it instead: the
  algorithm can't be changed once data is encrypted, and HashiCorp and
  AWS Key Management only support AES_CBC, so AES_CTR locks you into
  File Key Management. See MDEV-40657.

Also correct the claim that AES_CTR needs OpenSSL: wolfSSL builds
support it as of 11.2 (commit f94d467d326), so the restriction only
applies to earlier releases.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@mariadb-stefan-hinz mariadb-stefan-hinz added the documentation Improvements or additions to documentation label Aug 10, 2026
@mariadb-stefan-hinz
mariadb-stefan-hinz merged commit 6d51445 into main Sep 15, 2026
5 checks passed
@mariadb-stefan-hinz
mariadb-stefan-hinz deleted the DOCS-6412-tde-fundamentals-steps branch September 15, 2026 11:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant