1.1.0h (March 27, 2018; 9 days ago (2018-03-27)) [±]
1.0.2o (March 27, 2018; 9 days ago (2018-03-27)) [±]
1.1.1 beta 2 (April 3, 2018; 2 days ago (2018-04-03))
Apache License 1.0 and four-clause
OpenSSL is a software library for applications that secure
communications over computer networks against eavesdropping or need to
identify the party at the other end. It is widely used in internet web
servers, serving a majority of all web sites.
OpenSSL contains an open-source implementation of the SSL and TLS
protocols. The core library, written in the C programming language,
implements basic cryptographic functions and provides various utility
functions. Wrappers allowing the use of the
OpenSSL library in a
variety of computer languages are available.
Versions are available for most
Unix-like operating systems
(including Solaris, Linux, macOS, QNX, and the various open-source BSD
OpenVMS and Microsoft Windows. IBM provides a port
for the System i (OS/400).
1 Project history
2 Major version releases
FIPS 140-2 compliance
6 Notable vulnerabilities
6.1 Timing attacks on RSA Keys
6.2 Denial of Service
OCSP stapling vulnerability
ASN.1 BIO vulnerability
6.5 SSL, TLS and DTLS Plaintext Recovery Attack
6.6 Predictable private keys (Debian-specific)
6.8 CCS Injection Vulnerability
6.9 ClientHello sigalgs DoS
6.10 Key Recovery Attack on Diffie Hellman small subgroups
8 See also
10 External links
OpenSSL project was founded in 1998 to invent a free set of
encryption tools for the code used on the Internet. It is based on a
SSLeay by Eric Andrew Young and Tim Hudson, which unofficially
ended development on December 17, 1998, when Young and Hudson both
went to work for RSA Security.
OpenSSL project management team consists of four people, and the
entire development group consists of 11 members, out of which 10 are
volunteers. There is only one full-time employee, Stephen Henson, the
The project has a budget of less than $1 million a year and relies in
part on donations. Steve Marquess, a former CIA consultant in Maryland
started the foundation for donations and consultancy contracts and
garnered sponsorship from the United States Department of Homeland
Security and the United States Department of Defense.
Major version releases
OpenSSL release history
Original release date
Last minor version
Old version, no longer supported: 0.9.1
December 23, 1998
Official start of the
0.9.1c (December 23, 1998)
Old version, no longer supported: 0.9.2
March 22, 1999
Successor of 0.9.1c
0.9.2b (April 6, 1999)
Old version, no longer supported: 0.9.3
May 25, 1999
Successor of 0.9.2b
0.9.3a (May 27, 1999)
Old version, no longer supported: 0.9.4
August 9, 1999
Successor of 0.9.3a
0.9.4 (August 9, 1999)
Old version, no longer supported: 0.9.5
February 28, 2000
Successor of 0.9.4
0.9.5a (April 1, 2000)
Old version, no longer supported: 0.9.6
September 24, 2000
Successor of 0.9.5a
0.9.6m (March 17, 2004)
Old version, no longer supported: 0.9.7
December 31, 2002
Successor of 0.9.6m
0.9.7m (February 23, 2007)
Old version, no longer supported: 0.9.8
July 5, 2005
Successor of 0.9.7m
0.9.8zh (December 3, 2015)
Old version, no longer supported: 1.0.0
March 29, 2010
Successor of 0.9.8n
1.0.0t (December 3, 2015)
Old version, no longer supported: 1.0.1
March 14, 2012
Successor of 1.0.0
Supported until December 31, 2016
RFC 6520 TLS/DTLS heartbeat support.
RFC 5705 TLS key material exporter.
RFC 5764 DTLS-SRTP negotiation.
Next Protocol Negotiation.
PSS signatures in certificates, requests and certificate revocation
Support for password based recipient info for CMS.
Support TLS v1.2 and TLS v1.1.
Preliminary FIPS capability for unvalidated 2.0 FIPS module.
Secure Remote Password protocol (SRP) support.
1.0.1u (September 22, 2016)
Older version, yet still supported: 1.0.2
January 22, 2015
Successor of 1.0.1
Supported until December 31, 2019 (Long Term Support)
Suite B support for TLS 1.2 and DTLS 1.2
Support for DTLS 1.2
TLS automatic elliptic curve (EC) curve selection.
API to set TLS supported signature algorithms and curves
SSL_CONF configuration API.
TLS Brainpool support.
CMS support for RSA-PSS, RSA-OAEP,
ECDH and X9.42 DH.
1.0.2o (March 27, 2018)
Current stable version: 1.1.0
August 25, 2016
Successor of 1.0.2h
Supported until "one year after the release of 1.1.1" (~May 2019)
Support for ChaCha20-
Poly1305 (RFC 7539)
Support for extended master secret
Support for X25519
Support for DANE and Certificate Transparency
Kerberos ciphersuite support removed
RC4 and 3DES removed from DEFAULT ciphersuites in libssl
Remove DSS, SEED, IDEA, CAMELLIA, and AES-CCM from the DEFAULT
40 and 56 bit cipher support removed from libssl
1.1.0h (March 27, 2018)
Latest preview version of a future release: 1.1.1
March 20, 2018
TLS1.3 (draft 23).
Support for SHA-3
Future release: 1.1.1
April 03, 2018
April 17, 2018
May 01, 2018
~May 15, 2018
Older version, still supported
Latest preview version
OpenSSL supports a number of different cryptographic algorithms:
AES, Blowfish, Camellia, SEED, CAST-128, DES, IDEA, RC2, RC4, RC5,
Triple DES, GOST 28147-89
Cryptographic hash functions
MD5, MD4, MD2, SHA-1, SHA-2, RIPEMD-160, MDC-2, GOST R 34.11-94,
RSA, DSA, Diffie–Hellman key exchange, Elliptic curve, GOST R
Perfect forward secrecy is supported using elliptic curve
Diffie–Hellman since version 1.0.)
FIPS 140-2 compliance
As of December 2012[update],
OpenSSL is one of two open source
programs involved in validation under the
FIPS 140-2 computer security
standard by the National Institute of Standards and Technology's
Cryptographic Module Validation Program (CMVP). (OpenSSL
itself is not validated, but a component called the
Object Module, based on OpenSSL, was created to provide many of the
A certificate was first awarded in January 2006 but revoked in July
2006 "when questions were raised about the validated module’s
interaction with outside software." The certification was reinstated
in February 2007.
OpenSSL is double licensed under the
OpenSSL License and the SSLeay
License, which means that the terms of both licenses apply. The
OpenSSL License is
Apache License 1.0 and
SSLeay License bears some
similarity to a 4-clause
OpenSSL License is
Apache License 1.0, but not Apache License
2.0, it requires the phrase "this product includes software developed
OpenSSL Project for use in the
OpenSSL Toolkit" to appear in
advertising material and any redistributions (Sections 3 and 6 of the
OpenSSL License). Due to this restriction, the
OpenSSL License and the
Apache License 1.0 are incompatible with the GPL. Some GPL
developers have added an
OpenSSL exception to their licenses that
specifically permits using
OpenSSL with their system. GNU
climm both use such exceptions. Some packages (like Deluge)
explicitly modify the GPL license by adding an extra section at the
beginning of the license documenting the exception. Other packages
use the LGPL-licensed
GnuTLS and MPL-licensed NSS, which both perform
the same task.
OpenSSL announced in August 2015 that it would require most
contributors to sign a
Contributor License Agreement (CLA), and that
OpenSSL would eventually be relicensed under the terms of Apache
License 2.0. This process commenced in March 2017.
Timing attacks on RSA Keys
On March 14, 2003, a timing attack on RSA keys was discovered,
indicating a vulnerability within
OpenSSL versions 0.9.7a and 0.9.6.
This vulnerability was assigned the identifier CAN-2003-0147 by the
Common Vulnerabilities and Exposures (CVE) project. RSA blinding was
not turned on by default by OpenSSL, since it is not easily possible
to when providing SSL or TLS using OpenSSL. Almost all SSL enabled
Apaches were affected, along with many other applications of OpenSSL.
Timing differences on the number of extra reductions along and use of
Karatsuba and normal integer multiplication algorithms meant that it
was possible for local and remote attackers to obtain the private key
of the server.
Denial of Service
OpenSSL 0.9.6k had a bug where certain
ASN.1 sequences triggered a
large number of recursions on Windows machines, discovered on November
4, 2003. Windows could not handle large recursions correctly, so
OpenSSL would crash as a result. Being able to send arbitrary large
ASN.1 sequences would cause
OpenSSL to crash as a result. A
client certificate to a SSL/TLS enabled server could accept ASN.1
sequences and crash.
OCSP stapling vulnerability
When creating a handshake, the client could send an incorrectly
formatted ClientHello message, leading to
OpenSSL parsing more than
the end of the message. Assigned the identifier CVE-2011-0014 by the
CVE project, this affected all
OpenSSL versions 0.9.8h to 0.9.8q and
OpenSSL 1.0.0 to 1.0.0c. Since the parsing could lead to a read on an
incorrect memory address, it was possible for the attacker to cause a
DOS. It was also possible that some applications expose the contents
of parsed OCSP extensions, leading to an attacker being able to read
the contents of memory that came after the ClientHello.
ASN.1 BIO vulnerability
When using Basic Input/Output (BIO) or FILE based functions to
read untrusted DER format data,
OpenSSL is vulnerable. This
vulnerability was discovered on April 19, 2012, and was assigned the
CVE identifier CVE-2012-2110. While not directly affecting the SSL/TLS
code of OpenSSL, any application that was using
(particularly d2i_X509 and d2i_PKCS12) were also not affected.
SSL, TLS and DTLS Plaintext Recovery Attack
In handling CBC cipher-suites in SSL, TLS, and DTLS,
OpenSSL was found
vulnerable to a timing attack during the MAC processing. Nadhem
Alfardan and Kenny Paterson discovered the problem, and published
their findings on February 5, 2013. The vulnerability was assigned
the CVE identifier CVE-2013-0169. The vulnerability affected all
OpenSSL versions, and was only partially mitigated by using the
OpenSSL FIPS Object Module and enabling FIPS mode.
Predictable private keys (Debian-specific)
OpenSSL's pseudo-random number generator acquires entropy using
complex programming methods, described[by whom?] as poor coding
practice. To keep the
Valgrind analysis tool from issuing associated
warnings, a maintainer of the
Debian distribution applied a patch to
the Debian's variant of the
OpenSSL suite, which inadvertently broke
its random number generator by limiting the overall number of private
keys it could generate to 32,768. The broken version was
included in the
Debian release of September 17, 2006 (version
0.9.8c-1), also compromising other Debian-based distributions, for
example Ubuntu. Any key generated with the broken random number
generator was compromised, as well as the data encrypted with such
keys; moreover, ready-to-use exploits are easily
The error was reported by
Debian on May 13, 2008. On the
Debian 4.0 distribution (etch), these problems were fixed in
version 0.9.8c-4etch3, while fixes for the Debian 5.0
distribution (lenny) were provided in version 0.9.8g-9.
Main article: Heartbleed
A logo representing the
OpenSSL versions 1.0.1 through 1.0.1f had a severe memory handling bug
in their implementation of the TLS Heartbeat Extension that could be
used to reveal up to 64 KB of the application's memory with every
heartbeat (CVE-2014-0160). By reading the memory of the web
server, attackers could access sensitive data, including the server's
private key. This could allow attackers to decode earlier
eavesdropped communications if the encryption protocol used does not
ensure perfect forward secrecy. Knowledge of the private key could
also allow an attacker to mount a man-in-the-middle attack against any
future communications. The vulnerability might also reveal
unencrypted parts of other users' sensitive requests and responses,
including session cookies and passwords, which might allow attackers
to hijack the identity of another user of the service.
At its disclosure on April 7, 2014, around 17% or half a million of
the Internet's secure web servers certified by trusted authorities
were believed to have been vulnerable to the attack. However,
Heartbleed can affect both the server and client.
CCS Injection Vulnerability
CCS Injection Vulnerability (CVE-2014-0224) is a security bypass
vulnerability that exists in OpenSSL. The vulnerability is due to a
OpenSSL methods used for keying material.
This vulnerability can be exploited through the use of a
man-in-the-middle attack, where an attacker may be able to decrypt
and modify traffic in transit. A remote unauthenticated attacker could
exploit this vulnerability by using a specially crafted handshake to
force the use of weak keying material. Successful exploitation could
lead to a security bypass condition where an attacker could gain
access to potentially sensitive information. The attack can only be
performed between a vulnerable client and server.
OpenSSL clients are vulnerable in all versions of
OpenSSL before the
versions 0.9.8za, 1.0.0m and 1.0.1h. Servers are only known to be
OpenSSL 1.0.1 and 1.0.2-beta1. Users of
earlier than 1.0.1 are advised to upgrade as a precaution.
ClientHello sigalgs DoS
This vulnerability (CVE-2015-0291) allows anyone to take a
certificate, read its contents and modify it accurately to abuse the
vulnerability causing a certificate to crash a client or server. If a
client connects to an
OpenSSL 1.0.2 server and renegotiates with an
invalid signature algorithms extension, a null-pointer dereference
occurs. This can cause a DoS attack against the server.
A Stanford Security researcher, David Ramos, had a private exploit and
presented it before the
OpenSSL team where they patched the issue.
OpenSSL classified the bug as a high-severity issue, noting version
1.0.2 was found vulnerable.
Key Recovery Attack on Diffie Hellman small subgroups
This vulnerability (CVE-2016-0701) allows, when some particular
circumstances are met, to recover the
OpenSSL server's private
Diffie–Hellman key. An Adobe System Security researcher, Antonio
Sanso, privately reported the vulnerability.
OpenSSL classified the bug as a high-severity issue, noting only
version 1.0.2 was found vulnerable.
Main article: LibreSSL
In April 2014 in the wake of Heartbleed, members of the OpenBSD
OpenSSL starting with the 1.0.1g branch, to create a
project named LibreSSL. In the first week of pruning the OpenSSL's
codebase, more than 90,000 lines of C code had been removed from the
In June 2014,
Google announced its own fork of
Google plans to co-operate with
OpenSSL and LibreSSL
Free software portal
Comparison of TLS implementations
Comparison of cryptography libraries
^ a b "OpenSSL: Newslog". Retrieved 2018-03-27.
^ "OpenSSL: Newslog". Retrieved 2018-04-04.
^ a b Yadron, Danny (11 April 2014). "Internet Security Relies on Very
Few". WSJ.com. Archived from the original on 26 April 2014. Retrieved
10 May 2017. CS1 maint: BOT: original-url status unknown (link)
OpenSSL – Changelog".
OpenSSL Software Foundation. Retrieved
OpenSSL – Release Strategy".
OpenSSL Software Foundation.
OpenSSL 1.0.1 Series Release Notes". Archived from the original on
2015-01-20. Retrieved 2017-02-20.
OpenSSL 1.0.2 Series Release Notes". Retrieved 2017-02-20.
OpenSSL 1.1.0 Series Release Notes". Retrieved 2017-02-20.
^ Caswell, Matt (2018-02-08). "Using
OpenSSL - OpenSSL
^ a b c "GOST engine
OpenSSL 1.0.0 README". cvs.openssl.org. Archived
from the original on 2013-04-15.
OpenSSL source code, directory crypto/whrlpool". Retrieved
^ "Protecting data for the long term with forward secrecy". Retrieved
^ Validated FIPS 140-1 and
Cryptographic Modules. NIST.
^ "Important Notes about
OpenSSL and FIPS 140-2". openssl.org.
^ "NIST recertifies open source encryption module". gcn.com. Archived
from the original on 2007-10-10.
^ "OpenSSL: Source, License". openssl.org.
^ "Licenses – Free Software Foundation". fsf.org.
^ "WGET 1.10.2 for Windows (win32)". users.ugent.be. Archived from the
original on 2008-01-02.
^ "Releases of source and binaries". climm.org. Archived from the
original on 12 February 2011. Retrieved 30 November 2010.
^ "Deluge LICENSE file". deluge-torrent.org. Retrieved 24 January
^ Salz, Rich (1 August 2015). "License Agreements and Changes Are
Coming". openssl.org. Retrieved 23 August 2015.
OpenSSL Re-licensing to
Apache License v. 2.0 To Encourage Broader
Use with Other FOSS Projects and Products".
OpenSSL Updates Fix Critical Security Vulnerabilities [09 Aug
2014]". Retrieved 25 Aug 2014.
ASN.1 asn1_d2i_read_bio() Heap Overflow Vulnerability".
^ "ASN1 BIO vulnerability". OpenSSL.
^ "research!rsc: Lessons from the Debian/
research.swtch.com. Retrieved 2015-08-12.
^ "SSLkeys -
Debian Wiki". debian.org. Retrieved 2015-06-19.
OpenSSL – Predictable PRNG Bruteforce SSH Exploit Python
– Exploits Database". exploit-db.com. Retrieved 2015-08-12.
^ "DSA-1571-1 openssl – predictable random number generator".
Debian. May 13, 2008.
^ OpenSSL.org (7 April 2014). "
OpenSSL Security Advisory [07 Apr
2014]". Retrieved 9 April 2014.
OpenSSL (2014-04-07). "TLS heartbeat read overrun (CVE-2014-0160)".
^ Codenomicon Ltd (2014-04-08). "
Heartbleed Bug". Retrieved
^ "Man in Middle Attacks [04 Jun 2014]". Retrieved 25 Aug 2014.
Heartbleed is dangerous? Exploiting CVE-2014-0160". IPSec.pl.
^ Mutton, Paul (8 April 2014). "Half a million widely trusted websites
Heartbleed bug". Netcraft Ltd. Retrieved 8 April
OpenSSL continues to bleed out more flaws – more critical
vulnerabilities found". Cyberoam Threat Research Labs. 2014.
^ "CVE-2014-0224". CVE. 2014.
OpenSSL Security Advisory [05 Jun 2014]". OpenSSL. 2014.
OpenSSL Patches Severe Denial-of-Service Vulnerability [20 March
2015]". Brandon Stosh. 2015.
^ "High-severity bug in
OpenSSL allows attackers to decrypt HTTPS
traffic [28 Jan 2016]". 2016.
BSD has started a massive strip-down and cleanup of OpenSSL".
BSD journal. 2014-04-15.
BSD forks, prunes, fixes OpenSSL". ZDNet. 21 April 2014.
Retrieved 21 April 2014.
^ https://boringssl.googlesource.com/boringssl/ BoringSSL
Google unveils independent 'fork' of
OpenSSL called 'BoringSSL'".
Ars Technica. 2014-06-21.
^ "BoringSSL". Adam Langley's Weblog. 2014-06-20.
Wikimedia Commons has media related to OpenSSL.
OpenSSL Programming Guide
OpenSSL License and the GPL by Mark McLoughlin
OpenSSL programming tutorial
OpenSSL Community Wiki
TLS & SSL
Check Point VPN-1
Java Anon Proxy
File systems (List)
Outline of cryptography
Timeline of cryptography
Cryptographic hash function
List of hash functions
TLS and SSL
Protocols and technologies
Transport Layer Security / Secure Sockets Layer (TLS/SSL)
Transport Layer Security (DTLS)
Server Name Indication (SNI)
Application-Layer Protocol Negotiation (ALPN)
DNS-based Authentication of Named Entities (DANE)
DNS Certification Authority Authorization (CAA)
HTTP Strict Transport Security
HTTP Strict Transport Security (HSTS)
HTTP Public Key Pinning (HPKP)
Perfect forward secrecy
Automated Certificate Management Environment (ACME)
Certificate authority (CA)
Certificate revocation list (CRL)
Domain-validated certificate (DV)
Extended Validation Certificate
Extended Validation Certificate (EV)
Online Certificate Status Protocol (OCSP)
Public key certificate
Public key infrastructure
Public key infrastructure (PKI)
Domain Name System Security Extensions (DNSSEC)
Internet Protocol Security (IPsec)
Secure Shell (SSH)
Export of cryptography from the United States
Padding oracle attack
Bar mitzvah attack
POODLE (in regards to SSL 3.0)
Certificate authority compromise
Random number generator
Random number generator attacks
Lucky Thirteen attack
POODLE (in regards