Glossary

What is OpenSSL? The library that handles HTTPS encryption, and how to keep it safe

OpenSSL is the open-source library behind HTTPS (TLS), often inherited via the web server or OS. Why one flaw spreads worldwide and how to stay patched.

Published 2026-06-29 Updated 2026-10-06 8 min read
On this page

If you serve HTTPS, your server is almost certainly running on OpenSSL (or a compatible implementation). You never touch it directly, yet when a flaw is found, a huge number of servers are affected. Here's what the library does and how to defend it.

Where it is used

The tricky thing about OpenSSL is that you're using it without ever having chosen it. Your app delegates TLS to the web server, the web server delegates crypto to OpenSSL, and that OpenSSL is shipped by the OS, a nested stack.

Your app
↓ delegates TLS
Web server (Nginx / Apache) · language runtime
↓ delegates crypto
OpenSSL (shipped by the OS)
OpenSSL is the bottom layer. Every layer above delegates crypto to it, so one vulnerability affects all of them.

Normally this is convenient: crypto is left to a shared implementation written by experts. But when that shared library has a vulnerability, everyone who uses it is affected at once. That's what it means for a foundational-library flaw to have a wide impact.

OpenSSL vs SSL/TLS vs certificates

The names sound alike, so they get mixed up, but each plays a different role.

TermWhat it isExample
SSL / TLSThe rules (protocol) for encrypting a connection. SSL is the old version; today you use TLS 1.2 / 1.3HTTPS is HTTP wrapped in TLS
OpenSSLThe program (library) that actually performs TLS and cryptographic operations, plus a bundled command-line toolNginx and Apache call it internally
CertificateData in which a certificate authority vouches that you own a domain. It contains a public keyLet's Encrypt issues them for free

So OpenSSL is one tool that implements the TLS rules, and a certificate is data that tool uses during a connection. Other libraries implement TLS too (LibreSSL, BoringSSL, Windows Schannel and more), and which one you use depends on the OS and software.

Why the impact is so wide: one bug put the keys of many servers at risk

2014's Heartbleed (CVE-2014-0160) came from a small OpenSSL implementation mistake (trusting a claimed length without validating it) that let an outsider read server memory — which could include private keys and session data — a little at a time. Because OpenSSL was so widely used, a vast number of servers worldwide became targets simultaneously (full story → Heartbleed).

The lesson is clear: the lower in the stack a dependency sits, the wider the impact. So it's not just the dependencies your app imports directly — foundational libraries like OpenSSL running underneath deserve the same seriousness in monitoring and patching.

How to defend: avoid EOL, monitor foundational libraries

1

Know which OpenSSL your stack uses

You can't defend what you can't see. Inventory which OpenSSL (release line and version) your servers, container base images, and language runtimes each depend on.

2

Don't run end-of-life (EOL) versions

Once a release line is past support, new vulnerabilities found in it get no fix. If you keep running EOL, vulnerabilities stay unfixed even after they are found. Plan upgrades onto a supported line.

3

Include foundational libraries in CVE monitoring

App dependencies are easy to track with osv-scanner and the like, but the OS-shipped OpenSSL is easy to overlook. Make sure new CVEs in foundational libraries surface too (→ the CVE remediation playbook).

4

Patch promptly when it's serious

Heartbleed-class bugs are attacked the moment they're disclosed. Keep your update path light enough that foundational patches can ship same-day when the severity calls for it — not "at the next scheduled update."

Supported versions (as of October 2026)

The OpenSSL project releases a long-term support (LTS) version in April of odd-numbered years and supports it for at least five years. Non-LTS versions released after 3.5 are supported for 13 months from release.

LineTypeEnd of support
4.0RegularMay 14, 2027
3.6RegularNovember 1, 2026
3.5LTSApril 8, 2030
3.4RegularOctober 22, 2026
3.0 / 1.1.1 / 1.0.2—Ended (paid extended support from OpenSSL Corporation only)

OpenSSL shipped by your OS is a different story. Many Linux distributions, Red Hat-based ones among them, pull in fixes without raising the version number (backporting). During the OS's support period, a package that still reports 3.0 may keep receiving fixes from the OS vendor. Don't judge "old means vulnerable" or "new means safe" from the number alone; check your OS vendor's security advisories.

How to check your own environment

1

Check the OS's OpenSSL

Run openssl version -a to see the version. For the package version, use dpkg -l 'libssl*' openssl on Debian/Ubuntu or rpm -q openssl on Red Hat-based systems. Compare that package version against your OS vendor's security advisories to see whether a fix is included.
2

Check what your applications actually use

Some software bundles its own OpenSSL separate from the OS. nginx -V for Nginx, python3 -c "import ssl; print(ssl.OPENSSL_VERSION)" for Python, and node -p process.versions.openssl for Node.js show the built-in version.
3

Check container images too

OpenSSL inside a container does not change when you update the host OS. Rebuild base images regularly and scan each image for vulnerabilities.
4

Subscribe to OpenSSL security announcements

For releases with serious fixes, the openssl-announce mailing list gets the date and severity (without details) about a week ahead. With that notice you can set aside time for the update in advance.

How to read vulnerability severity

The OpenSSL project rates its own vulnerabilities on four levels and changes how it ships fixes accordingly.

SeverityRough meaningHow the fix ships
CriticalAffects common configurations and is easy to exploit (significant leakage of server memory, theft of private keys, and so on)A fix is released right away for every supported version
HighLess risky than Critical but still serious (less common configurations, client side only, and so on)Prepared privately, then released for every supported version
ModerateLimited to denial of service, uncommon protocols, and the likeBundled into the next scheduled release
LowCommand-line tools only, unlikely combinations of conditions, and the likeBundled into the next scheduled release

A flaw like Heartbleed, where server memory can be read from outside, matches the definition of Critical. For Critical and High, start preparing the update as soon as you see the advance notice.

Our take: monitor foundational libraries with machines

You can't track foundational-library flaws on human memory. This site puts its own dependencies and foundations under machine CVE monitoring. The certificates you serve via Let's Encrypt still run their crypto through an OpenSSL-family implementation underneath, so listing the foundational libraries you never think about and monitoring them is the most direct way to prevent wide-impact incidents.

Sources (primary)

  • OpenSSL Library, "Release Strategy" — openssl-library.org (LTS policy, end-of-support dates for each line)
  • OpenSSL Library, "Security Policy" — openssl-library.org (four severity levels, advance notice)
  • Red Hat, "Backporting Security Fixes" — access.redhat.com (why the version number alone doesn't tell you whether you're vulnerable)
  • NIST NVD, "CVE-2014-0160" — nvd.nist.gov (Heartbleed)

FAQ

QI never installed OpenSSL — could I still be using it?
A

Almost certainly yes. OpenSSL is a foundational library used internally by web servers (Nginx/Apache), operating systems, and language runtimes. Even if you never reference it in your code, if you're serving HTTPS then OpenSSL (or a compatible implementation) is very likely running underneath. Assuming 'I don't use it' is exactly how foundational vulnerabilities get missed.

QHow is it different from LibreSSL or BoringSSL?
A

Both are forks of OpenSSL. LibreSSL was created by the OpenBSD project after Heartbleed to clean up the codebase; BoringSSL is Google's variant for its own use. Most users don't need to choose between them — what matters far more is keeping whichever implementation your platform ships on a supported, up-to-date version.

QHow do I check the version or update it?
A

On many systems `openssl version` shows it, and you update it through your OS package manager or by rebuilding your container's base image. The key point is not to keep running an end-of-life (EOL) release: once a release line is EOL, new vulnerabilities found in it get no fix. Track your foundational dependencies the same way you track your app's dependencies.

QWhat's the difference between OpenSSL and SSL?
A

SSL (today, its successor TLS) is the name of the rules (protocol) for encrypting a connection. OpenSSL is the name of a program (library) that actually runs those rules. When you connect over HTTPS, the web server uses a library such as OpenSSL to handle TLS.

QCan I still use OpenSSL 3.0?
A

Support for 3.0 from the OpenSSL project has ended (except paid extended support). However, a 3.0 package shipped by a Linux distribution may keep receiving backported fixes during that OS's support period. A 3.0 you built yourself or one bundled inside an application won't get fixes, so move to a supported line such as 3.5 (LTS, supported until April 2030).

QAn OpenSSL vulnerability was just announced. What do I do first?
A

Check the severity first. If it's Critical or High, check whether your servers, containers, and applications use an affected OpenSSL line, and update as soon as your OS vendor or image publisher ships the fix. After updating, restart the processes that load OpenSSL (such as the web server); otherwise the old library stays in memory.