Feature deprecation FAQ
This page provides frequently asked questions concerning decisions made about OpenBao feature deprecations. Please refer to the Feature Deprecation Notice and Plans document for up-to-date information on OpenBao feature deprecations and notice.
- Q: What is the impact of removing support for X.509 certificates with signatures that use SHA-1?
- Q: What are the phases of deprecation?
Q: what is the impact of removing support for x.509 certificates with signatures that use SHA-1?
OpenBao is built with Go 1.21 or later. The standard library in Go 1.18 and later rejects X.509 signatures that use a SHA-1 hash.
If this issue impacts your usage of OpenBao, you can temporarily work around it by deploying OpenBao with the environment variable GODEBUG=x509sha1=1
set.
This workaround will fail in a future version of Go, however, the Go team has not said when they will remove this workaround.
If you want to check whether a certificate or CA contains a problematic signature, you can use the OpenSSL CLI:
$ openssl x509 -text -noout -in somecert.pem | grep sha1
Signature Algorithm: sha1WithRSAEncryption
Signature Algorithm: sha1WithRSAEncryption
Any signature algorithms that contain sha1
will be potentially problematic.
Here are the use cases that may still use certificates with SHA-1:
Auth methods
- Kerberos Auth Method
- Kubernetes Auth Method
- LDAP Auth Method
- JWT/OIDC Auth Method
- TLS Certificates Auth Method
Database secrets engines
- Cassandra Database Secrets Engine
- InfluxDB Database Secrets Engine
- MySQL/MariaDB Database Secrets Engine
Secrets engines
Q: what are the phases of deprecation?
OpenBao implements a multi-phased approach to deprecation. The intent of this approach is to provide sufficient warning that a feature will be removed and safe handling of stored data when the associated feature has been removed.
The phases of deprecation are also known as "Deprecation Status". These statuses are currently reflected in builtin plugins and are exposed via the OpenBao auth
, secrets
, and plugins
CLI/API endpoints. For more information, refer to the corresponding documentation.
The four phases of deprecation are: Supported
, Deprecated
, Pending Removal
, and Removed
.
Note: Deprecation Status currently only applies to builtin auth
and secrets
plugins. All external plugins will report a status of n/a
. This is expected behavior.
Supported
This is the default status and reflects a feature which is still supported. There is no unique behavior or functionality associated with this status.
Deprecated
This status reflects a feature which has been marked for deprecation in a later release of OpenBao. This is the first phase of the deprecation process. A status of Deprecated
has two effects:
-
After an upgrade, any existing
Deprecated
feature (builtin auth/secrets plugins enabled via CLI or API prior to upgrade) will logWarn
-level messages on unseal. -
All new usage of
Deprecated
features will logWarn
-level messages. -
All
POST/GET/LIST
endpoints associated with this feature will returnwarnings
in response data.
Pending removal
This status reflects a feature which has been officially deprecated in this release of OpenBao. This is the first phase in the process that fundamentally alters the behavior of OpenBao. The effects are two-fold:
-
After an upgrade, any existing
Pending Removal
feature (builtin auth/secrets plugins enabled via CLI or API prior to upgrade) will logError
-level messages to the OpenBao log and cause an immediate shutdown of the OpenBao core. -
Any new
Pending Removal
will fail and logError
-level messages to the OpenBao log and CLI/API.
VAULT_ALLOW_PENDING_REMOVAL_MOUNTS
The Pending Removal
behavior may be overriden using a new environment variable: VAULT_ALLOW_PENDING_REMOVAL_MOUNTS
. This environment variable effectively allows all Pending Removal
features to be treated as Deprecated
.
Removed
This status reflects a feature which has been officially removed from OpenBao. Removed
is the last phase of the deprecation process. During this phase, code for this feature no longer exists within OpenBao.
-
After an upgrade, any existing
Removed
feature will logError
-level messages to the OpenBao log and cause an immediate shutdown of the OpenBao core. -
Any new
Removed
features will fail and logError
-level messages to the OpenBao log and CLI/API.
Migration path
In order to successfully upgrade, use of the Removed
feature must be discontinued. To accomplish this:
-
Downgrade OpenBao to a previous version.
-
Replace any
Removed
orPending Removal
feature with the preferred alternative feature. -
Upgrade to latest desired version.