OpenSSL 3.0 to 3.5 PQC Migration Worksheet

Published · Updated

Moving from an OpenSSL 3.0-era deployment to OpenSSL 3.5 can provide native ML-KEM, ML-DSA, and SLH-DSA implementations, but a package upgrade does not automatically make an application post-quantum secure. The application must use the target provider and APIs, the protocol must negotiate the intended construction, dependencies must interoperate, and production teams need evidence and rollback.

Download the editable OpenSSL 3.0-to-3.5 migration worksheet CSV. Use YES, NO, UNKNOWN, or NOT APPLICABLE in the status column. Replace the prompts with system-specific evidence rather than treating completion as certification.

Lifecycle boundary before technical work

Upstream OpenSSL 3.0 public support ended on September 7, 2026. OpenSSL 3.5 is an LTS release supported upstream through April 8, 2030. Those are upstream dates, not proof that every Linux-distribution package or commercial build follows the same schedule.

Record two lifecycles:

  1. the upstream OpenSSL branch;
  2. the distribution, appliance, container-base-image, or commercial-provider package you actually deploy.

A vendor-maintained 3.0 package can have a different support contract. Conversely, an application can bundle an unmaintained 3.0 library even when the host operating system is supported. Verify the loaded runtime, not only the package-manager database.

Worksheet status vocabulary

StatusMeaning
YESVerified with current evidence for this exact environment
NOChecked and not satisfied; action or exception required
UNKNOWNNot yet checked or evidence is missing
NOT APPLICABLEOutside the defined scope, with a recorded reason

“YES” should point to a command output, build manifest, test report, ticket, vendor document, or approved decision. It should not mean “probably.”

A. Inventory the current environment

CheckStatusEvidence to capture
Exact runtime version and build options identifiedUNKNOWNopenssl version -a, package build, image digest, compile flags
Loaded library matches the CLI binaryUNKNOWNProcess/library inspection, runtime diagnostics, application startup log
Upstream and package-provider support windows recorded separatelyUNKNOWNOpenSSL lifecycle plus distribution or vendor source
Build and delivery method identifiedUNKNOWNOS package, source build, static link, vendored library, container, appliance
Every linked application and service owner identifiedUNKNOWNService inventory, package dependency output, build manifests
Current configuration files and environment overrides collectedUNKNOWNopenssl.cnf, include paths, environment variables, application overrides
Current providers and engines identifiedUNKNOWNProvider list, engine list, HSM/KMS integration documentation
Current TLS versions, groups, ciphers, certificates, and keys recordedUNKNOWNConfig, handshake capture, certificate inventory, key location

Use the cryptographic inventory guide if the estate is not yet mapped. An OpenSSL migration scoped only to one executable can miss reverse proxies, language runtimes, plugins, agents, appliances, and statically linked copies.

B. Define the target rather than “enable PQC”

RequirementStatusTarget and evidence
Cryptographic function identifiedUNKNOWNTLS key establishment, standalone KEM, signing, verification, certificate, code signing, other
Exact target algorithm or construction namedUNKNOWNFor example ML-KEM-768, ML-DSA-65, SLH-DSA variant, or X25519MLKEM768
Standards and protocol status recordedUNKNOWNNIST standard, RFC, draft, vendor construction, internal profile
Peer or dependent-system support verifiedUNKNOWNClient, server, CA, HSM, middleware, load balancer, scanner
Hybrid requirement and fallback policy documentedUNKNOWNApproved groups, ordering, downgrade behavior, exit criteria
Success is measurableUNKNOWNNegotiated group, verified signature, key operation, compatibility result

OpenSSL 3.5 implements ML-KEM-512/768/1024, ML-DSA-44/65/87, and SLH-DSA variants in its provider architecture. Those primitive implementations do not mean every protocol, certificate ecosystem, application, or hardware key store can use them.

For TLS, OpenSSL 3.5’s default group list predicts an X25519MLKEM768 key share. A successful upgrade still requires the application to use the new library, the relevant configuration to remain active, and the peer and network path to tolerate the handshake. The RFC 10024 hybrid TLS guide explains standardized group names and interoperability.

C. Check application and API compatibility

CheckStatusEvidence to capture
Application vendor supports OpenSSL 3.5UNKNOWNSupported-version matrix or written vendor confirmation
Source builds cleanly with the target headersUNKNOWNBuild log with deprecation warnings reviewed
Runtime links to the intended 3.5 libraryUNKNOWNLinker/runtime inspection in the deployed artifact
High-level EVP APIs are used where requiredUNKNOWNCode review and integration tests
Deprecated low-level calls are inventoriedUNKNOWNStatic analysis, compiler output, code search
Engine dependencies have a provider migration planUNKNOWNVendor roadmap, provider module, tested compatibility path
Encoding, decoding, key import/export, and store loaders workUNKNOWNRound-trip tests with production-like key material
Language bindings and native extensions support the targetUNKNOWNBinding version, ABI test, packaging evidence

OpenSSL 3.x releases with the same major version are API- and ABI-compatible under OpenSSL’s versioning policy, but that does not eliminate application risk. New features, provider selection, deprecated APIs, configuration, packaging, and external modules still need testing. Engine-backed workflows have limited forward applicability; OpenSSL encourages engine authors to move to providers.

D. Providers, configuration, and FIPS requirements

CheckStatusEvidence to capture
Required providers load explicitly and in the intended orderUNKNOWNopenssl list -providers, application diagnostics, config review
Default provider remains available when other providers are activatedUNKNOWNProvider and algorithm-list output
Property queries select the intended implementationUNKNOWNfips=yes or other property query plus test evidence
Legacy-provider dependencies are identifiedUNKNOWNAlgorithm inventory and provider mapping
FIPS requirement is defined per environment and operationUNKNOWNPolicy owner, module boundary, required certificate
Installed FIPS module/version has the required validation statusUNKNOWNCMVP certificate and exact module version
PQ algorithm availability is not confused with FIPS validationUNKNOWNProvider output plus current validation record
HSM/KMS/provider module supports the target keys and operationsUNKNOWNFirst-party capability documentation and integration test

OpenSSL documentation lists PQ algorithms in default and FIPS-provider implementations, but implementation availability is not the same as a deployed module holding a current FIPS 140 validation covering the required operation. OpenSSL reports that 3.5.4 has been submitted for FIPS 140-3 validation. Verify the exact installed module and current CMVP record instead of inferring compliance from the branch number.

Use the FIPS 140-2 to FIPS 140-3 transition guide to classify Active, Historical and Revoked certificates and to distinguish existing-system exceptions from new-system procurement.

OpenSSL configuration has another operational trap: explicitly activating a non-default provider can require explicitly activating the default provider too. A configuration that works in the CLI may differ from an application using its own library context or property query.

E. Key and certificate handling

CheckStatusEvidence to capture
Existing private keys remain loadable after upgradeUNKNOWNTest with copies in staging; never expose production keys
New PQ keys can be generated, stored, backed up, and restoredUNKNOWNKey lifecycle test and ownership record
Key encodings and application serializers interoperateUNKNOWNPKCS#8/public-key round trip and peer test
Certificate or trust-chain dependencies are separately assessedUNKNOWNCA/browser/client/HSM support matrix
Rotation, revocation, recovery, and destruction procedures cover new keysUNKNOWNRunbook and exercised recovery evidence
Key-size and signature-size impacts are measuredUNKNOWNStorage, message, certificate, HSM, and transport tests

ML-KEM is a key-encapsulation mechanism. ML-DSA and SLH-DSA are signature algorithms. Enabling hybrid TLS key establishment does not migrate certificate signatures, code signing, document signatures, authentication, or stored-data encryption.

Use the NIST PQC standards guide to keep ML-KEM, ML-DSA, and SLH-DSA functions separate. The PQC algorithm reference records their standardized parameter sets.

F. TLS and interoperability plan

CheckStatusEvidence to capture
Target clients and servers negotiate the intended groupUNKNOWNHandshake output or packet capture with exact versions
Classical-only peers follow the approved compatibility pathUNKNOWNPositive and negative interop tests
Middleboxes accept larger ClientHello and handshake messagesUNKNOWNTests through production-like firewall, proxy, IDS, and TLS inspection
Group ordering and fallback behavior match policyUNKNOWNServer/client configuration and negotiation matrix
Resumption, load balancing, health checks, and monitoring still workUNKNOWNEnd-to-end staging evidence
Performance and message-size baselines are recordedUNKNOWNLatency, CPU, memory, bandwidth, connection-rate measurements

Do not copy a benchmark from another environment into the acceptance record. Test the exact build, CPU, compiler, application, protocol settings, and network path. The OpenSSL quantum-safe configuration guide gives configuration examples; this worksheet supplies the surrounding deployment controls.

G. Build a production-like test environment

CheckStatusEvidence to capture
Staging mirrors production library loading and config pathsUNKNOWNImage/build comparison and startup output
Representative clients, servers, and failure cases are includedUNKNOWNTest matrix and version inventory
PQ operations are verified directlyUNKNOWNAlgorithm/provider lists plus KEM/sign/verify results
Protocol use is verified independently of primitive availabilityUNKNOWNNegotiation or application-level evidence
Security, load, recovery, and rollback tests passUNKNOWNTest reports with thresholds and owners
Logs expose version, provider, negotiation, and failure signals safelyUNKNOWNSample telemetry without secret material

The PQC implementation test guide provides a wider laboratory plan. Keep test artifacts linked to the migration record rather than replacing them with a checkbox.

H. Rollout and rollback

CheckStatusEvidence to capture
Rollout population and canary order definedUNKNOWNHosts, services, users, regions, or traffic percentage
Go/no-go thresholds approvedUNKNOWNError rate, latency, interop, security, and business thresholds
Previous package/image/config remains recoverableUNKNOWNImmutable artifact, repository reference, retention period
Database, key, or certificate changes are reversible or stagedUNKNOWNMigration sequence and recovery procedure
Rollback authority and communication path assignedUNKNOWNNamed role, escalation route, maintenance window
Rollback has been rehearsed under production-like conditionsUNKNOWNTimed exercise and result
Post-rollout monitoring window and owner definedUNKNOWNDashboard, alert, review date, incident process

A rollback plan is not “downgrade the package.” Library, configuration, keys, certificates, state, and linked applications may change together. Define the known-good bundle and any irreversible step before production rollout.

I. Post-migration verification

CheckStatusEvidence to capture
Production process loads the approved version and providersUNKNOWNRuntime evidence from each deployment class
Required PQ capability is actually usedUNKNOWNNegotiation, encapsulation, sign, or verify evidence
Classical and unsupported paths behave as designedUNKNOWNCompatibility and failure test
Logs, metrics, alerts, and inventory show the new stateUNKNOWNDashboard and updated CBOM/inventory record
Support and vulnerability processes track the new branchUNKNOWNOwner, advisory feed, patch SLA, next review date
Temporary compatibility settings have owners and expiry criteriaUNKNOWNException record and removal milestone

Migration is complete only for the defined system and cryptographic function. OpenSSL 3.5 can be a necessary platform step without completing an organization’s wider PQC migration.

Sources