Array ( [0] => {{short description|Open-source implementation of the SSL and TLS protocols}} [1] => {{Distinguish|OpenSSH}} [2] => {{Use mdy dates|date=October 2020}} [3] => {{Infobox software [4] => | name = OpenSSL [5] => | logo = OpenSSL logo.svg [6] => | screenshot = UEFI Secure Boot DB certificate.png [7] => | developer = The OpenSSL Project [8] => | released = {{start date and age|1998}} [9] => | latest release version = {{Multiple releases [10] => | branch1 = Stable [11] => | version1 = {{wikidata|property|preferred|references|edit|Q1052790|P348|P548=Q2804309}} [12] => | date1 = {{wikidata|qualifier|preferred|single|Q1052790|P348|P548=Q2804309|P577}} [13] => | branch2 = LTS [14] => | version2 = {{wikidata|property|preferred|references|edit|Q1052790|P348|P548=Q15726348}} [15] => | date2 = {{wikidata|qualifier|preferred|single|Q1052790|P348|P548=Q15726348|P577}} [16] => }} [17] => | latest preview version = {{wikidata|property|preferred|references|edit|Q1052790|P348|P548=Q51930650}} [18] => | latest preview date = {{wikidata|qualifier|preferred|single|Q1052790|P348|P548=Q51930650|P577}} [19] => | operating system = [20] => | programming language = [[C (programming language)|C]], [[Assembly language|Assembly]], [[Perl]] [21] => | genre = [[Cryptography]] [[Library (computer science)|library]] [22] => | license = 3.0 and later: [[Apache License|Apache-2.0]]{{Cite web|title=/source/license.html|url=https://www.openssl.org/source/license.html|access-date=2021-03-03|website=www.openssl.org}}
1.x and earlier: OpenSSL{{Cite web|url=https://spdx.org/licenses/OpenSSL.html|title=OpenSSL License | Software Package Data Exchange (SPDX)|website=spdx.org}} [23] => | website = {{URL|www.openssl.org/}} [24] => }} [25] => [26] => '''OpenSSL''' is a software [[library (computing)|library]] for applications that provide secure communications over [[computer network]]s against eavesdropping, and identify the party at the other end. It is widely used by [[Internet]] [[server (computing)|servers]], including the majority of [[HTTPS]] [[website]]s. [27] => [28] => OpenSSL contains an [[open-source software|open-source]] implementation of the [[Transport Layer Security|SSL and TLS]] protocols. The core [[library (computer science)|library]], written in the [[C (programming language)|C programming language]], implements basic [[cryptography|cryptographic]] functions and provides various utility functions. Wrappers allowing the use of the OpenSSL library in a variety of computer languages are available. [29] => [30] => The OpenSSL Software Foundation (OSF) represents the OpenSSL project in most legal capacities including contributor license agreements, managing donations, and so on. OpenSSL Software Services (OSS) also represents the OpenSSL project for support contracts. [31] => [32] => OpenSSL is available for most [[Unix-like]] [[operating system]]s (including [[Linux]], [[macOS]], and [[BSD]]), [[Microsoft Windows]] and [[OpenVMS]]. [33] => [34] => == Project history == [35] => [36] => The OpenSSL project was founded in 1998 to provide a free set of encryption tools for the code used on the Internet. It is based on a fork of [[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]]. The initial founding members were Mark Cox, Ralf Engelschall, Stephen Henson, [[Ben Laurie]], and Paul Sutton.{{Cite mailing list |url=https://marc.info/?l=ssl-users&m=91566086807308&w=2 |title=ANNOUNCE: OpenSSL (Take 2|access-date=2018-10-29 |mailing-list=ssl-users |first=Ben |last=Laurie |date=1999-01-06}} [37] => [38] => In 2018 OpenSSL [[version numbering]] skipped from 1.1.1 to 3.0.0, omitting 2 as a major version number to avoid a conflict with one of OpenSSL's modules. Version 3.0.0 was the first to use the [[Apache License]]. [39] => [40] => {{As of|2019|May}},{{cite web|title=New Committers|url=https://www.openssl.org/blog/blog/2019/05/20/committers//|publisher=OpenSSL Software Foundation|date=2019-05-20|access-date=2019-11-03}} the OpenSSL management committee consisted of seven people{{cite web|title=OpenSSL Management Committee|url=https://www.openssl.org/community/omc.html|publisher=OpenSSL Software Foundation|access-date=2019-11-03}} and there are seventeen developers{{cite web|title=OpenSSL Committers|url=https://www.openssl.org/community/committers.html|publisher=OpenSSL Software Foundation|access-date=2019-11-03}} with commit access (many of whom are also part of the OpenSSL management committee). There are only two full-time employees (fellows) and the remainder are volunteers. [41] => [42] => The project has a budget of less than $1 million USD per year and relies primarily on donations. Development of TLS 1.3 was sponsored by [[Akamai Technologies|Akamai]].{{cite mailing list |title=Akamai sponsors TLS 1.3 |url=https://mta.openssl.org/pipermail/openssl-announce/2017-January/000090.html |mailing-list=openssl-announce |date=2017-01-19 |first=Steve |last=Marquess |access-date=2018-11-09}} [43] => [44] => == Major version releases == [45] => [46] => [47] => {|class="wikitable" style="min-width:40%" [48] => |+ OpenSSL release history{{cite web|title=OpenSSL – Changelog|url=https://www.openssl.org/news/changelog.html|publisher=OpenSSL Software Foundation|access-date=2016-09-26}}{{cite web|title=OpenSSL – Release Strategy|url=https://www.openssl.org/policies/releasestrat.html|publisher=OpenSSL Software Foundation|access-date=2016-09-26}}{{cite web |url=https://github.com/openssl/openssl/blob/master/NEWS.md |title=OpenSSL Releases |website=[[GitHub]] |access-date=2022-12-06}} [49] => |- [50] => ! Version !! Original release date !! Comment !! Last minor version [51] => |- [52] => | {{Version |o |0.9.1}}{{cite web |url=https://github.com/openssl/openssl/blob/master/NEWS.md#openssl-09x |title=OpenSSL 0.9.x series notes |website=[[GitHub]] |access-date=2022-12-06}} [53] => | {{start date|1998|12|23|df=yes}} [54] => | align="right" | [55] => * Official start of the OpenSSL project [56] => | 0.9.1c (23 December 1998) [57] => |- [58] => | {{Version |o |0.9.2}} [59] => | {{start date|1999|03|22|df=yes}} [60] => | align="right" | [61] => * Successor of 0.9.1c [62] => | 0.9.2b (6 April 1999) [63] => |- [64] => | {{Version |o |0.9.3}} [65] => | {{start date|1999|05|25|df=yes}} [66] => | align="right" | [67] => * Successor of 0.9.2b [68] => | 0.9.3a (27 May 1999) [69] => |- [70] => | {{Version |o |0.9.4}} [71] => | {{start date|1999|08|09|df=yes}} [72] => | align="right" | [73] => * Successor of 0.9.3a [74] => | 0.9.4 (9 August 1999) [75] => |- [76] => | {{Version |o |0.9.5}} [77] => | {{start date|2000|02|28|df=yes}} [78] => | align="right" | [79] => * Successor of 0.9.4 [80] => | 0.9.5a (1 April 2000) [81] => |- [82] => | {{Version |o |0.9.6}} [83] => | {{start date|2000|09|24|df=yes}} [84] => | align="right" | [85] => * Successor of 0.9.5a [86] => | 0.9.6m (17 March 2004) [87] => |- [88] => | {{Version |o |0.9.7}} [89] => | {{start date|2002|12|31|df=yes}} [90] => | align="right" | [91] => * Successor of 0.9.6m [92] => | 0.9.7m (23 February 2007) [93] => |- [94] => | {{Version |o |0.9.8}} [95] => | {{start date|2005|07|05|df=yes}} [96] => | align="right" | [97] => * Successor of 0.9.7m [98] => | 0.9.8zh (3 December 2015) [99] => |- [100] => | {{Version |o |1.0.0}}{{cite web |url=https://github.com/openssl/openssl/blob/master/NEWS.md#openssl-100 |title=OpenSSL 1.0.0 series notes |website=[[GitHub]] |access-date=2022-12-06}} [101] => | {{start date|2010|03|29|df=yes}} [102] => | align="right" | [103] => * Successor of 0.9.8n [104] => | 1.0.0t ({{end date|2015|12|03|df=yes}}) [105] => |- [106] => | {{Version |o |1.0.1}}{{cite web |url=https://github.com/openssl/openssl/blob/master/NEWS.md#openssl-101 |title=OpenSSL 1.0.1 series notes |website=[[GitHub]] |access-date=2022-12-06}} [107] => | {{start date|2012|03|14|df=yes}} [108] => | align="right" | [109] => * Successor of 1.0.0h [110] => * Supported until 31 December 2016 [111] => * RFC 6520 TLS/DTLS heartbeat support [112] => * [[SCTP]] support [113] => * RFC 5705 TLS key material exporter [114] => * RFC 5764 DTLS-SRTP negotiation [115] => * Next Protocol Negotiation [116] => * PSS signatures in certificates, requests and [[certificate revocation list]]s (CRL) [117] => * Support for password based recipient info for CMS [118] => * Support TLS 1.2 and TLS 1.1 [119] => * Preliminary [[FIPS 140]] capability for unvalidated 2.0 FIPS module [120] => * [[Secure Remote Password protocol]] (SRP) support [121] => | 1.0.1u ({{end date|2016|09|22|df=yes}}) [122] => |- [123] => | {{Version |o |1.0.2}}{{cite web |url=https://github.com/openssl/openssl/blob/master/NEWS.md#openssl-102 |title=OpenSSL 1.0.2 series notes |website=[[GitHub]] |access-date=2022-12-06}} [124] => | {{start date|2015|01|22|df=yes}} [125] => | align="right" | [126] => * Successor of 1.0.1l [127] => * Supported until 31 December 2019 (Long Term Support) [128] => * Suite B support for TLS 1.2 and DTLS 1.2 [129] => * Support for DTLS 1.2 [130] => * TLS automatic [[Elliptic-curve cryptography|elliptic curve]] (EC) selection [131] => * API to set TLS supported signature algorithms and curves [132] => * SSL_CONF configuration API [133] => * TLS [[ECC Brainpool|Brainpool]] support [134] => * [[ALPN]] support [135] => * CMS support for [[RSA-PSS]], [[RSA-OAEP]], [[ECDH]] and [[X9.42]] DH [136] => * [[FIPS 140]] support [137] => | 1.0.2u ({{end date|2019|12|20|df=yes}}) [138] => |- [139] => | {{Version |o|1.1.0}}{{cite web |url=https://github.com/openssl/openssl/blob/master/NEWS.md#openssl-110 |title=OpenSSL 1.1.0 series notes |website=[[GitHub]] |access-date=2022-12-06}} [140] => | {{start date|2016|8|25|df=yes}} [141] => | align="right" | [142] => * Successor of 1.0.2h [143] => * Supported until 11 September 2019 [144] => * Support for [[BLAKE2]] (RFC 7693) [145] => * Support for [[ChaCha20]]-[[Poly1305]] (RFC 7539) [146] => * Support for [[Curve25519|X25519]] (RFC 7748) [147] => * Support for [[DNS-based Authentication of Named Entities|DANE]] and [[Certificate Transparency]] [148] => * Support for [[CCM mode|CCM]] Ciphersuites [149] => * Support for extended master secret [150] => * SSLv2 removed [151] => * Kerberos ciphersuite support removed [152] => * RC4 and 3DES removed from DEFAULT ciphersuites in libssl [153] => * Remove DSS, SEED, IDEA, CAMELLIA, and AES-CCM from the DEFAULT cipherlist [154] => * 40 and 56 bit cipher support removed from libssl [155] => * [[FIPS 140]] support removed [156] => | 1.1.0l ({{end date|2019|9|10|df=yes}}) [157] => |- [158] => | {{Version |o|1.1.1 LTS}}{{Cite web|url=https://www.openssl.org/blog/blog/2018/09/11/release111/|title=OpenSSL 1.1.1 Is Released|last=Caswell|first=Matt|date=2018-09-11|website=www.openssl.org|publisher=OpenSSL Foundation|language=en}}{{cite web |url=https://github.com/openssl/openssl/blob/master/NEWS.md#openssl-111 |title=OpenSSL 1.1.1 series notes |website=[[GitHub]] |access-date=2022-12-06}} [159] => | {{start date|2018|9|11|df=yes}} [160] => | align="right" | [161] => * Successor of 1.1.0i [162] => * Supported until 11 September 2023 (Long Term Support){{Cite web|url=https://www.openssl.org/policies/releasestrat.html|title=Release Strategy|date=2020-01-07|website=www.openssl.org|publisher=OpenSSL Foundation|language=en}} [163] => * Support for [[Transport Layer Security|TLS 1.3]]{{Cite web|url=https://www.openssl.org/blog/blog/2018/02/08/tlsv1.3/|title=Using TLS1.3 With OpenSSL - OpenSSL Blog|last=Caswell|first=Matt|date=2018-02-08|website=www.openssl.org|publisher=OpenSSL Foundation|language=en}} [164] => * Support for [[SHA-3]] [165] => * Support for [[Curve448|X448 and Ed448]] (RFC 7748) [166] => * Support for [[SipHash]] [167] => * Support for [[ARIA (cipher)|ARIA]] [168] => * Support for multi-prime [[RSA (cryptosystem)|RSA]] (RFC 8017) [169] => * Support for [[SM2 (algorithm)|SM2]], [[SM3 (hash function)|SM3]] and [[SM4 (cipher)|SM4]] [170] => * [[Heartbeat (computing)|Heartbeat]] removed [171] => * QNX support removed [172] => | 1.1.1w (11 September 2023) [173] => |- [174] => | {{Version |co|3.0.0 LTS}}{{Cite web|title=OpenSSL 3.0 Has Been Released! - OpenSSL Blog|url=https://www.openssl.org/blog/blog/2021/09/07/OpenSSL3.Final/|access-date=2021-09-08|website=www.openssl.org}}{{cite web |url=https://github.com/openssl/openssl/blob/master/NEWS.md#openssl-30 |title=OpenSSL 3.0 series notes |website=[[GitHub]] |access-date=2022-12-06}}{{Refn|group=note|name=a|The major version 2.0.0 was skipped due to its previous use in the OpenSSL FIPS module.}} [175] => | {{start date|2021|9|7|df=yes}} [176] => | align="right" | [177] => * Supported until 7 September 2026 (Long Term Support) [178] => * Relicensed to the [[Apache License 2.0]]{{Cite web|title=The Holy Hand Grenade of Antioch|url=https://www.openssl.org/blog/blog/2018/11/28/version/|publisher=OpenSSL Blog|author=Matt Caswell|date=2018-11-28|access-date=2019-10-07}} [179] => * [[FIPS 140-2]] support re-added. [180] => | Ongoing development
(EOL 2026-09-07) [181] => |- [182] => |- [183] => | {{Version |co|3.1.0}}{{Cite web|title=OpenSSL 3.1 Final Release - OpenSSL Blog|url=https://www.openssl.org/blog/blog/2023/03/07/OpenSSL3.1Release/|access-date=2023-03-15|website=www.openssl.org}}{{cite web |url=https://github.com/openssl/openssl/blob/master/NEWS.md#openssl-31 |title=OpenSSL 3.1 series notes |website=[[GitHub]] |access-date=2023-03-15}} [184] => | {{start date|2023|3|14|df=yes}} [185] => | align="right" | [186] => * Supported until 14 March 2025 [187] => * [[FIPS 140-3]] compliance [188] => * Performance enhancements [189] => | Ongoing development
(EOL 2025-03-14) [190] => |- [191] => | {{Version |c|3.2.0}}{{Cite web|title=OpenSSL 3.2.0 Final Release - OpenSSL Blog|url=https://www.openssl.org/blog/blog/2023/11/23/OpenSSL32/|access-date=2023-11-24|website=www.openssl.org}}{{cite web |url=https://github.com/openssl/openssl/blob/master/NEWS.md#openssl-32 |title=OpenSSL 3.2 series notes |website=[[GitHub]] |access-date=2023-11-24}} [192] => | {{start date|2023|11|23|df=yes}} [193] => | align="right" | [194] => * Client-side [[QUIC]] support [195] => * Certificate compression (RFC 8879) [196] => * Deterministic [[Elliptic Curve Digital Signature Algorithm|ECDSA]] (RFC 6979) [197] => * TLS raw public keys (RFC 7250) [198] => | Ongoing development
(EOL 2025-11-23) [199] => |- [200] => | colspan="4" | {{Version |l |show=111100}} [201] => |} [202] => [203] => == Algorithms == [204] => [205] => OpenSSL supports a number of different cryptographic algorithms: [206] => ; [[Cipher]]s: [207] => : [[Advanced Encryption Standard|AES]], [[Blowfish (cipher)|Blowfish]], [[Camellia (cipher)|Camellia]], [[Chacha20]], [[Poly1305]], [[SEED]], [[CAST-128]], [[Data Encryption Standard|DES]], [[International Data Encryption Algorithm|IDEA]], [[RC2]], [[RC4]], [[RC5]], [[Triple DES]], [[GOST (block cipher)|GOST 28147-89]],{{cite web |url=http://cvs.openssl.org/fileview?f=openssl/engines/ccgost/README.gost |archive-url=https://archive.today/20130415122812/http://cvs.openssl.org/fileview?f=openssl/engines/ccgost/README.gost |url-status=dead |archive-date=2013-04-15 |title=GOST engine OpenSSL 1.0.0 README |publisher=cvs.openssl.org }} [[SM4 (cipher)|SM4]] [208] => ; [[Cryptographic hash function]]s: [209] => : [[MD5]], [[MD4]], [[MD2 (cryptography)|MD2]], [[SHA-1]], [[SHA-2]], [[SHA-3]], [[RIPEMD-160]], [[MDC-2]], [[GOST (hash function)|GOST R 34.11-94]], [[BLAKE (hash function)#BLAKE2|BLAKE2]], [[Whirlpool (cryptography)|Whirlpool]],{{cite web|url=https://github.com/openssl/openssl/tree/master/crypto/whrlpool|title=OpenSSL source code, directory crypto/whrlpool|website=[[GitHub]] |access-date=2017-08-29}} [[SM3 (hash function)|SM3]] [210] => ; [[Public-key cryptography]]: [211] => : [[RSA (algorithm)|RSA]], [[Digital Signature Algorithm|DSA]], [[Diffie–Hellman key exchange]], [[Elliptic curve cryptography|Elliptic curve]], [[X25519]], [[Ed25519]], [[Curve448|X448]], [[Curve448|Ed448]], [[GOST R 34.10-2001]], [[SM2 (algorithm)|SM2]] [212] => [213] => ([[Perfect forward secrecy]] is supported using [[elliptic curve Diffie–Hellman]] since version 1.0.{{cite web|url=http://googleonlinesecurity.blogspot.com.au/2011/11/protecting-data-for-long-term-with.html|title=Protecting data for the long term with forward secrecy|access-date=2012-11-05}}) [214] => [215] => == FIPS 140 validation == [216] => [217] => [[FIPS 140]] is a U.S. Federal program for the testing and certification of cryptographic modules. An early FIPS 140-1 certificate for OpenSSL's FOM 1.0 was revoked in July 2006 "when questions were raised about the validated module's interaction with outside software." The module was re-certified in February 2007 before giving way to FIPS 140-2.{{cite web |url=http://www.gcn.com/online/vol1_no1/43142-1.html |title=NIST recertifies open source encryption module |publisher=gcn.com |url-status=dead |archive-url=https://web.archive.org/web/20071010000622/http://www.gcn.com/online/vol1_no1/43142-1.html |archive-date=2007-10-10 }} OpenSSL 1.0.2 supported the use of the OpenSSL FIPS Object Module (FOM), which was built to deliver FIPS approved algorithms in a FIPS 140-2 validated environment.{{cite web |url=https://www.openssl.org/docs/fips.html |title=FIPS-140 |publisher=openssl.org |access-date=2019-11-12}}{{cite web |date=2017-03-14 |url=https://www.openssl.org/docs/fips/UserGuide-2.0.pdf |title=OpenSSL User Guide for the OpenSSL FIPS Object Module v2.0 |publisher=openssl.org |access-date=2019-11-12}} OpenSSL controversially decided to categorize the 1.0.2 architecture as 'end of life' or 'EOL', effective December 31, 2019, despite objections that it was the only version of OpenSSL that was currently available with support for FIPS mode.{{cite web |url=https://www.openssl.org/blog/blog/2019/11/07/3.0-update/ |title=Update on 3.0 Development, FIPS and 1.0.2 EOL |website=OpenSSL Blog |date=7 November 2019 }} As a result of the EOL, many users were unable to properly deploy the FOM 2.0 and fell out of compliance because they did not secure extended support for the 1.0.2 architecture, although the FOM itself remained validated for eight months further. [218] => [219] => The FIPS Object Module 2.0 remained FIPS 140-2 validated in several formats until September 1, 2020, when NIST deprecated the usage of FIPS 186-2 for [[Digital Signature Standard]] and designated all non-compliant modules as 'Historical'. This designation includes a caution to federal agencies that they should not include the module in any new procurements. All three of the OpenSSL validations were included in the deprecation – the OpenSSL FIPS Object Module (certificate #1747),{{cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/1747 |title=Cryptographic Module Validation Program Certificate #1747 |website=Computer Security Resource Center |date=October 11, 2016 }} OpenSSL FIPS Object Module SE (certificate #2398),{{cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/2398 |title=Cryptographic Module Validation Program Certificate #2398 |website=Computer Security Resource Center |date=October 11, 2016 }} and OpenSSL FIPS Object Module RE (certificate #2473).{{cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/2473 |title=Cryptographic Module Validation Program Certificate #2473 |website=Computer Security Resource Center |date=October 11, 2016 }} Many 'private label' OpenSSL-based validations and clones created by consultants were also moved to the Historical List, although some FIPS validated modules with replacement compatibility avoided the deprecation, such as BoringCrypto from Google{{cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Advanced&Vendor=google&ModuleName=boringcrypto&Standard=140-2&CertificateStatus=Active&ValidationYear=0 |title=Cryptographic Module Validation Program search results |website=Computer Security Resource Center |date=October 11, 2016 }} and CryptoComply from SafeLogic.{{cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Advanced&Vendor=safelogic&ModuleName=cryptocomply&Standard=140-2&CertificateStatus=Active&ValidationYear=0 |title=Cryptographic Module Validation Program search results |website=Computer Security Resource Center |date=October 11, 2016 }} [220] => [221] => The OpenSSL Management Committee announced a change in the versioning scheme. [222] => [223] => Due to this change, the major number of the next major version would have been doubled, since the OpenSSL FIPS module already occupied this number. Therefore the decision was made to skip the OpenSSL 2.0 version number and continue with OpenSSL 3.0 . [224] => [225] => OpenSSL 3.0 restored FIPS mode and underwent FIPS 140-2 testing, but with significant delays: The effort was first kicked off in 2016 with support from SafeLogic{{cite news |url=https://gcn.com/articles/2016/07/20/openssl-fips |title=Getting government approval of a more secure OpenSSL |last=Schneider |first=Troy K. |date=20 July 2016 |work=GCN: Technology, Tools, and Tactics for Public Sector IT }}{{cite news |url=https://www.fedscoop.com/openssl-us-government-safelogic-fips-140-2-2016/ |first=Shaun |last=Waterman |title=SafeLogic saves the day for feds' use of OpenSSL |date=21 July 2016 |work=FedScoop }}{{cite news |url=https://www.infoworld.com/article/3098868/reworked-openssl-on-track-for-government-validation.html |first=Fahmida Y. |last=Rashid |title=Reworked OpenSSL on track for government validation |date=26 July 2016 |work=InfoWorld }} and further support from Oracle in 2017,{{cite news |url=https://www.dbta.com/Editorial/News-Flashes/Oracle-SafeLogic-and-OpenSSL-Join-Forces-to-Update-FIPS-Module-119707.aspx |first=Joyce |last=Wells |title=Oracle, SafeLogic and OpenSSL Join Forces to Update FIPS Module |date=3 August 2017 |work=Database Trends and Applications }}{{cite news |url=https://www.eweek.com/security/oracle-joins-safelogic-to-develop-fips-module-for-openssl-security |first=Sean Michael |last=Kerner |title=Oracle Joins SafeLogic to Develop FIPS Module for OpenSSL Security |date=4 August 2017 |work=eWeek }} but the process has been challenging.{{cite web |url=https://www.openssl.org/blog/blog/2020/10/20/OpenSSL3.0Alpha7/ |title=OpenSSL 3.0 Alpha7 Release |date=20 October 2020 |website=OpenSSL Blog }} [226] => [227] => On October 20, 2020, the OpenSSL FIPS Provider 3.0 was added to the CMVP Implementation Under Test List, which reflected an official engagement with a testing lab to proceed with a FIPS 140-2 validation. This resulted in a slew of certifications in the following months.{{cite web |url=https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search?SearchMode=Basic&ModuleName=OpenSSL&CertificateStatus=Active&ValidationYear=0 |title=Cryptographic Module Validation Program: OpenSSL |website=Computer Security Resource Center |date=October 11, 2016 }} [228] => [229] => == Licensing == [230] => [231] => OpenSSL was dual-licensed under the OpenSSL License and the SSLeay License, which means that the terms of either licenses can be used.{{cite web |url=https://www.openssl.org/source/license.html |title=OpenSSL: Source, License |publisher=openssl.org}} The OpenSSL License is [[Apache License]] 1.0 and SSLeay License bears some similarity to a 4-clause [[BSD License]]. [232] => As the OpenSSL License was [[Apache License]] 1.0, but not Apache License 2.0, it requires the phrase "this product includes software developed by the 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 [[GNU General Public License|GNU GPL]].{{cite web |url=http://www.fsf.org/licensing/licenses |title=Licenses – Free Software Foundation |publisher=fsf.org}} [233] => Some GPL developers have added an ''OpenSSL exception'' to their licenses that specifically permits using OpenSSL with their system. GNU [[Wget]] and [[climm]] both use such exceptions.{{cite web |url=http://users.ugent.be/~bpuype/wget |title=WGET 1.10.2 for Windows (win32) |publisher=users.ugent.be |url-status=dead |archive-url=https://web.archive.org/web/20080102164139/http://users.ugent.be/~bpuype/wget/ |archive-date=2008-01-02 }}{{cite web |url=http://www.climm.org/download.shtml.en |title=Releases of source and binaries |publisher=climm.org |access-date=30 November 2010 |url-status=dead |archive-url=https://web.archive.org/web/20110212024627/http://www.climm.org/download.shtml.en |archive-date=12 February 2011 }} Some packages (like [[Deluge (software)|Deluge]]) explicitly modify the GPL license by adding an extra section at the beginning of the license documenting the exception.{{cite web |url=http://git.deluge-torrent.org/deluge/plain/LICENSE |title=Deluge LICENSE file |publisher=deluge-torrent.org |access-date=24 January 2013}} Other packages use the [[GNU Lesser General Public License|LGPL]]-licensed [[GnuTLS]], [[BSD licenses|BSD]]-licensed [[Botan (programming library)|Botan]], or [[Mozilla Public License|MPL]]-licensed [[Network Security Services|NSS]], which perform the same task. [234] => [235] => OpenSSL announced in August 2015 that it would require most contributors to sign a [[Contributor License Agreement]] (CLA), and that OpenSSL would eventually be [[Software relicensing|relicensed]] under the terms of [[Apache License 2.0]].{{cite web [236] => | url = https://www.openssl.org/blog/blog/2015/08/01/cla/ [237] => | title = License Agreements and Changes Are Coming [238] => | date = 1 August 2015 | access-date = 23 August 2015 [239] => | last = Salz | first = Rich | website = openssl.org [240] => }} This process commenced in March 2017,{{Cite web |url=https://www.coreinfrastructure.org/news/announcements/2017/03/openssl-re-licensing-apache-license-v-20-encourage-broader-use-other-foss |title=OpenSSL Re-licensing to Apache License v. 2.0 To Encourage Broader Use with Other FOSS Projects and Products |date=2017-03-23 |access-date=2018-08-06 |archive-url=https://web.archive.org/web/20170718040958/https://www.coreinfrastructure.org/news/announcements/2017/03/openssl-re-licensing-apache-license-v-20-encourage-broader-use-other-foss |archive-date=2017-07-18}} and was complete in 2018.{{ Cite web | url = https://opensource.com/article/19/2/top-foss-legal-developments | title = Top 10 FOSS legal developments of 2018 | access-date = 2019-09-28 | first1 = Victoria | last1 = Lee | first2 = Mark | last2 = Radcliffe | first3 = Chris | last3 = Stevenson | date = 2019-02-05 | website = Opensource.com, [[Red Hat]] | quote = The OpenSSL project announced that it had completed its shift from the OpenSSL/SSLeay license to the Apache Software License version 2 (ASLv2). | archive-url = https://web.archive.org/web/20190205110130/https://opensource.com/article/19/2/top-foss-legal-developments | archive-date = 2019-02-05 | df = dmy-all }} [241] => [242] => On 7 September 2021, OpenSSL 3.0.0 was released under the Apache License 2.0.{{Cite web |url=https://wiki.openssl.org/index.php/OpenSSL_3.0#License_Change |title=OpenSSL 3.0 License Change |date=2021-09-22 |access-date=2021-09-24 }} [243] => [244] => == Notable vulnerabilities == [245] => [246] => === Denial of service: ASN.1 parsing === [247] => [248] => OpenSSL 0.9.6k has 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 numbers of ASN.1 sequences would cause OpenSSL to crash as a result. [249] => [250] => === OCSP stapling vulnerability === [251] => [252] => 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 [[Denial-of-service attack|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.{{cite web|title=OpenSSL Updates Fix Critical Security Vulnerabilities |date=9 August 2014|url=https://blogs.comodo.com/it-security/openssl-updates-fix-critical-security-vulnerabilities/|access-date=25 August 2014|df=mdy-all}} [253] => [254] => === ASN.1 BIO vulnerability === [255] => [256] => When using Basic Input/Output (BIO){{cite web |url=https://tools.cisco.com/security/center/viewAlert.x?alertId=25706 |title=OpenSSL ASN.1 asn1_d2i_read_bio() Heap Overflow Vulnerability |publisher=Cisco}} or FILE based functions to read untrusted [[Distinguished Encoding Rules|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 ASN.1 functions (particularly d2i_X509 and d2i_PKCS12) were also not affected.{{cite web |url=https://www.openssl.org/news/secadv_20120419.txt |title=ASN1 BIO vulnerability |publisher=OpenSSL}} [257] => [258] => === SSL, TLS and DTLS plaintext recovery attack === [259] => [260] => 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{{cite web|url=http://www.isg.rhul.ac.uk/tls/|title=On the Security of RC4 in TLS|publisher=Royal Holloway Department of Information Security}} on February 5, 2013. The vulnerability was assigned the CVE identifier {{CVE|2013-0169}}. [261] => [262] => === Predictable private keys (Debian-specific) === [263] => [264] => OpenSSL's pseudo-[[random number generator]] acquires entropy using complex programming methods. To keep the [[Valgrind]] analysis tool from issuing associated warnings, a maintainer of the [[Debian]] distribution applied a [[patch (computing)|patch]] to 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.{{Cite web |title=research!rsc: Lessons from the Debian/OpenSSL Fiasco |url=http://research.swtch.com/openssl |website=research.swtch.com |access-date=2015-08-12|df=mdy-all}}{{Cite web |title=SSLkeys |website=Debian Wiki |url=https://wiki.debian.org/SSLkeys |access-date=2015-06-19|df=mdy-all}} 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 (operating system)|Ubuntu]]. Ready-to-use [[exploit (computer security)|exploits]] are easily available.{{Cite web |title=Debian OpenSSL – Predictable PRNG Bruteforce SSH Exploit Python |website=Exploits Database |url=https://www.exploit-db.com/exploits/5720/ |access-date=2015-08-12|date=2008-06-01 |df = mdy-all }} [265] => [266] => 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.{{cite web |title=DSA-1571-1 openssl – predictable random number generator |url=http://www.debian.org/security/2008/dsa-1571 |publisher=[[Debian]] Project |date=May 13, 2008 }} [267] => [268] => === {{anchor|Heartbleed bug}}Heartbleed === [269] => [270] => {{Main|Heartbleed}} [271] => [272] => [[File:Heartbleed.svg|thumb|A logo representing the Heartbleed bug]] [273] => [274] => OpenSSL versions 1.0.1 through 1.0.1f have a severe memory handling [[software bug|bug]] in their implementation of the [[Transport Layer Security|TLS]] Heartbeat Extension that could be used to reveal up to 64 [[Kibibyte|KB]] of the application's memory with every [[heartbeat (computing)|heartbeat]]{{cite web|title=OpenSSL Security Advisory [07 Apr 2014]|url=https://www.openssl.org/news/secadv_20140407.txt|author=OpenSSL.org|access-date=9 April 2014|date=7 April 2014|df=mdy-all}}{{Cite web| last = OpenSSL| title = TLS heartbeat read overrun (CVE-2014-0160)| access-date = 2014-04-08| date = 2014-04-07| url = https://www.openssl.org/news/secadv_20140407.txt|df=mdy-all}} ({{CVE|2014-0160}}). By reading the memory of the web server, attackers could access sensitive data, including the server's [[public-key cryptography|private key]].{{Cite web| last = Codenomicon Ltd| title = Heartbleed Bug| access-date = 2014-04-08| date = 2014-04-08| url = http://heartbleed.com/|df=mdy-all}} This could allow attackers to decode earlier [[eavesdropping|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.{{citation needed|date=April 2019}} The vulnerability might also reveal unencrypted parts of other users' sensitive requests and responses, including [[session cookie]]s and passwords, which might allow attackers to [[Session hijacking|hijack the identity]] of another user of the service.{{cite web |url=http://ipsec.pl/ssl-tls/2014/why-heartbleed-dangerous-exploiting-cve-2014-0160.html |title=Why Heartbleed is dangerous? Exploiting CVE-2014-0160 |year=2014 |publisher=IPSec.pl |access-date=April 8, 2014 |archive-date=April 8, 2014 |archive-url=https://web.archive.org/web/20140408224556/http://ipsec.pl/ssl-tls/2014/why-heartbleed-dangerous-exploiting-cve-2014-0160.html |url-status=dead }} [275] => [276] => At its disclosure on April 7, 2014, around 17% or half a million of the Internet's secure [[web servers]] certified by [[Certificate authority|trusted authorities]] were believed to have been vulnerable to the attack.{{cite web|last=Mutton|first=Paul|title=Half a million widely trusted websites vulnerable to Heartbleed bug|url=http://news.netcraft.com/archives/2014/04/08/half-a-million-widely-trusted-websites-vulnerable-to-heartbleed-bug.html|publisher=Netcraft Ltd.|access-date=8 April 2014|date=8 April 2014|df=mdy-all}} However, Heartbleed can affect both the server and client. [277] => [278] => === {{anchor|CVE-2014-0224}}CCS injection vulnerability === [279] => [280] => The CCS Injection Vulnerability ({{CVE|2014-0224}}) is a security bypass vulnerability that results from a weakness in OpenSSL methods used for keying material.{{cite web |url=http://www.cyberoam.com/blog/openssl-continues-to-bleed-out-more-flaws-more-critical-vulnerabilities-found/ |title=OpenSSL continues to bleed out more flaws – more critical vulnerabilities found |year=2014 |publisher=Cyberoam Threat Research Labs |access-date=2014-06-13 |archive-url=https://web.archive.org/web/20140619034859/http://www.cyberoam.com/blog/openssl-continues-to-bleed-out-more-flaws-more-critical-vulnerabilities-found/ |archive-date=2014-06-19 |url-status=dead |df=mdy-all}} [281] => [282] => This vulnerability can be exploited through the use of a man-in-the-middle attack,{{cite web |url=https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0224 |title=CVE-2014-0224 |year=2014 |publisher=CVE}} 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. [283] => [284] => 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 vulnerable in OpenSSL 1.0.1 and 1.0.2-beta1. Users of OpenSSL servers earlier than 1.0.1 are advised to upgrade as a precaution.{{cite web |url=https://www.openssl.org/news/secadv_20140605.txt |title=OpenSSL Security Advisory |date=5 June 2014 |publisher=OpenSSL|df=mdy-all}} [285] => [286] => === {{anchor|CVE-2015-0291}}ClientHello sigalgs DoS === [287] => [288] => 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. [289] => [290] => A Stanford Security researcher, David Ramos, had a private exploit and presented it to the OpenSSL team, which then patched the issue. [291] => [292] => OpenSSL classified the bug as a high-severity issue, noting version 1.0.2 was found vulnerable.{{cite web |url=http://freedomhacker.net/openssl-patches-severe-denial-of-service-vulnerability-3818/ |title=OpenSSL Patches Severe Denial-of-Service Vulnerability |date=20 March 2015 |publisher=Brandon Stosh|df=mdy-all}} [293] => [294] => === {{anchor|CVE-2016-0701}}Key recovery attack on Diffie–Hellman small subgroups === [295] => [296] => 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. [297] => [298] => OpenSSL classified the bug as a high-severity issue, noting only version 1.0.2 was found vulnerable.{{cite web |url=https://arstechnica.com/security/2016/01/high-severity-bug-in-openssl-allows-attackers-to-decrypt-https-traffic/ |title= High-severity bug in OpenSSL allows attackers to decrypt HTTPS traffic |date=28 January 2016 |work=Ars Technica |first=Dan |last=Goodlin|df=mdy-all}} [299] => [300] => == Forks == [301] => [302] => === {{Anchor|assl}}Agglomerated SSL === [303] => [304] => In 2009, after frustrations with the original OpenSSL API, Marco Peereboom, an OpenBSD developer at the time, forked the original API by creating Agglomerated SSL (assl), which reuses OpenSSL API under the hood, but provides a much simpler external interface.{{cite web |url= http://ports.su/security/assl |title= security/assl: assl-1.5.0p0v0 – hide awful SSL API in a sane interface |work= [[OpenBSD ports]] |date= 2014-05-22 |access-date= 2015-02-10 }} It has since been deprecated in light of the [[LibreSSL]] fork circa 2016. [305] => [306] => === LibreSSL === [307] => [308] => {{Main|LibreSSL}} [309] => [310] => In April 2014 in the wake of [[Heartbleed]], members of the [[OpenBSD]] project [[fork (software development)|fork]]ed OpenSSL starting with the 1.0.1g branch, to create a project named [[LibreSSL]].{{cite web |url=http://www.undeadly.org/cgi?action=article&sid=20140415093252&mode=expanded |title= OpenBSD has started a massive strip-down and cleanup of OpenSSL |date=2014-04-15| work=OpenBSD journal}} In the first week of pruning the OpenSSL's [[codebase]], more than 90,000 lines of C code had been removed from the fork.{{cite web|title= OpenBSD forks, prunes, fixes OpenSSL |url=http://www.zdnet.com/openbsd-forks-prunes-fixes-openssl-7000028613/|publisher=ZDNet|access-date=21 April 2014|date=21 April 2014}} [311] => [312] => === {{Anchor|BORINGSSL}}BoringSSL === [313] => [314] => In June 2014, [[Google]] announced its own fork of OpenSSL dubbed BoringSSL.{{cite web|url=https://boringssl.googlesource.com/boringssl/|title=BoringSSL|website=Git at Google}} Google plans to co-operate with OpenSSL and LibreSSL developers.{{cite web |title=Google unveils independent 'fork' of OpenSSL called 'BoringSSL' |date=2014-06-21 |work=Ars Technica |url=https://arstechnica.com/security/2014/06/google-unveils-independent-fork-of-openssl-called-boringssl/}}{{cite web |title=BoringSSL|date=2014-06-20|work=Adam Langley's Weblog |url=https://www.imperialviolet.org/2014/06/20/boringssl.html}}{{cite web|url=https://nakedsecurity.sophos.com/2014/06/24/boringssl-wants-kill-the-excitement-that-led-to-heartbleed/|title=BoringSSL wants to kill the excitement that led to Heartbleed|date=24 June 2014|publisher=Sophos}} Google has since developed a new library, Tink, based on BoringSSL.{{Cite web|url=https://medium.com/asecuritysite-when-bob-met-alice/goodbye-openssl-and-hello-to-google-tink-583163cfd76c|title=Goodbye OpenSSL, and Hello To Google Tink|first=Bill|last=Buchanan|date=2018-08-30|website=Medium|access-date=2019-04-04}} [315] => [316] => == Criticisms == [317] => [318] => === Backwards compatibility === [319] => [320] => Among developers communities, OpenSSL is often cited for introducing API compatibility breakage with each new major version,{{Cite web|url=https://github.com/brave/brave-browser/issues/22305|title=OpenSSL 3 breaks webpack build · Issue #22305 · brave/brave-browser|website=GitHub}}{{Cite web|url=https://bbs.archlinux.org/viewtopic.php?id=277577|title=openssl version 3.0 in arch? / Newbie Corner / Arch Linux Forums|website=bbs.archlinux.org}}{{Cite web|url=https://discourse.ubuntu.com/t/openssl-3-0-transition-plans/24453|title=OpenSSL 3.0 transition plans|date=April 6, 2022|website=Ubuntu Community Hub}}{{Cite web|url=https://github.com/nginx/unit/issues/597|title=OpenSSL 3.0 Compatibility · Issue #597 · nginx/unit|website=GitHub}} which requires software adaptations that tend to delay new version adoptions.{{Cite web|url=https://discuss.python.org/t/our-future-with-openssl/21486|title=Our future with OpenSSL|date=November 28, 2022|website=Discussions on Python.org}} This, combined with the fact that previous releases are generally maintained for no more than two years after a new major one is released{{Cite web|url=https://www.openssl.org/blog/blog/2021/09/07/OpenSSL3.Final/|title=OpenSSL 3.0 Has Been Released! - OpenSSL Blog|website=www.openssl.org}} tends to force some vendors to anticipate software migrations very early while still having little time left{{Cite web|url=https://www.redhat.com/en/blog/experience-bringing-openssl-30-rhel-and-fedora|title=The experience of bringing OpenSSL 3.0 into Red Hat Enterprise Linux and Fedora|website=www.redhat.com}} to update to a new release, sometimes at the risk of losing some compatibility with existing software{{Cite web|url=https://groups.google.com/g/help-cfengine/c/45i4ROevUVw|title=Compile against OpenSSL 3.X|website=groups.google.com}}{{Cite web|url=https://forum.eset.com/topic/32613-eset-management-agent-rhel-9x-openssl-30x/|title=ESET Management Agent (RHEL 9.x, OpenSSL 3.0.x)|website=ESET Security Forum}} or risking regressions.{{Cite web|url=https://bugs.python.org/issue46313|title=Issue 46313: SSLObject does not raise SSLEOFError on OpenSSL 3 - Python tracker|website=bugs.python.org}}{{Cite web|url=https://www.tenable.com/plugins/nessus/164507|title=RHEL 9 : openssl (RHSA-2022:6224)|website=www.tenable.com}} [321] => [322] => === Delay between releases === [323] => [324] => While LTS (''long term supported'') releases are maintained for 5 years,{{Cite web|url=https://www.openssl.org/policies/releasestrat.html|title=/policies/releasestrat.html|website=www.openssl.org}} accumulated delays in release time frames tend to force operating system vendors to stay on the last supported release longer, leaving less margin when the new version is available. For example OpenSSL 3.0 was initially expected for Q4 2019{{Cite web|url=https://www.openssl.org/blog/blog/2019/11/07/3.0-update/|title=Update on 3.0 Development, FIPS and 1.0.2 EOL - OpenSSL Blog|website=www.openssl.org}} and was finally issued 21 months later without extending the expected end of support for previously supported version 1.1.1, and this despite the significant changes that required adaptations to existing software. [325] => [326] => === Significant performance regressions === [327] => [328] => The reduced support delay of version 1.1.1 mentioned above causes further concerns to users whose workloads are sensitive to performance. Some time after general availability of 3.0, some users started to report serious performance regressions affecting this version in multi-threaded environments, many citing the inefficient use of locks in frequent low-level operations, citing slowdowns from 80 to 400 times.{{Cite web|url=https://github.com/openssl/openssl/issues/17064|title=Massive performance degradation in OpenSsl 3.0 if used in a heavy multi threaded server application · Issue #17064 · openssl/openssl|website=GitHub}}{{Cite web|url=https://github.com/openssl/openssl/issues/17950|title=Performance issue with Openssl 3.0 in multi threaded application when using d2i_x509 · Issue #17950 · openssl/openssl|website=GitHub}}{{Cite web|url=https://github.com/openssl/openssl/issues/18814|title=Severe efficiency degradation of credential loading in comparison to 1.1.1 · Issue #18814 · openssl/openssl|website=GitHub}}{{Cite web|url=https://github.com/openssl/openssl/issues/20286|title=3.0 performance degraded due to locking · Issue #20286 · openssl/openssl|website=GitHub}}{{Cite web|url=https://github.com/nodejs/node/issues/43128|title=High cpu usage for outbound ssl requests after upgrading from v16.15.0 to v18.1.0 · Issue #43128 · nodejs/node|website=GitHub}}{{Cite web|url=https://github.com/openssl/openssl/issues/18472|title=Massive performance degradation in OpenSsl 3.0 FIPS provider · Issue #18472 · openssl/openssl|website=GitHub}}{{Cite web|url=https://github.com/openssl/openssl/issues/16791|title=Performance measurements · Issue #16791 · openssl/openssl|website=GitHub}}{{Cite web|url=https://github.com/openssl/openssl/issues/15199|title=PEM/DER decoding of PKCS8 RSA private keys are 80 times slower in 3.0 · Issue #15199 · openssl/openssl|website=GitHub}} The OpenSSL team has created a meta-issue to try to centralize reports of such massive performance regressions.{{Cite web|url=https://github.com/openssl/openssl/issues/17627|title=3.0 Performance problems · Issue #17627 · openssl/openssl|website=GitHub}} About half of these reporters indicate the impossibility for them to upgrade to 3.0 from earlier versions, adding to the trouble caused by the limited support time left on previous version 1.1.1. [329] => [330] => === Consideration for users' requirements === [331] => [332] => While the [[QUIC]] transport layer was being worked on to support the third version of the [[HTTP]] protocol, it was proposed to use TLS to provide security,{{Cite web|url=https://datatracker.ietf.org/doc/draft-ietf-quic-tls/01/|title=Using Transport Layer Security (TLS) to Secure QUIC|date=January 14, 2017|via=IETF}} and identified that some adaptations to TLS libraries would be needed. Such modifications were brought to BoringSSL{{Cite web|url=https://bugs.chromium.org/p/boringssl/issues/detail?id=221|title=221 - boringssl - A fork of OpenSSL that is designed to meet Google’s needs - Monorail|website=bugs.chromium.org}} which was the library being primarily used by QUIC developers by then, and later ported to other libraries.{{Cite web|url=https://gitlab.com/gnutls/gnutls/-/issues/826|title=Support QUIC TLS API (#826) · Issues · gnutls / GnuTLS · GitLab|website=GitLab}} A port of this work was quickly proposed to OpenSSL.{{Cite web|url=https://github.com/openssl/openssl/pull/8797|title=WIP: master QUIC support by tmshort · Pull Request #8797 · openssl/openssl|website=GitHub}} While some discussion started the same day, it quickly stalled and was first blocked on license considerations, then kept on hold once these concerns were cleared. Finally 10 months later the OpenSSL Management Committee announced on a blog post{{Cite web|url=https://www.openssl.org/blog/blog/2020/02/17/QUIC-and-OpenSSL/|title=QUIC and OpenSSL - OpenSSL Blog|website=www.openssl.org}} that this patch set would not be adopted for 3.0 on the fear that the API would change over time. Finally more than one year after planned release of 3.0 which was still not coming, a team of volunteers from [[Akamai]] and [[Microsoft]] decided to fork the project as QuicTLS{{cite web|title=quictls announce on twitter|url=https://twitter.com/richsalz/status/1367349918671773697}} and support these patches on top of the OpenSSL code in order to unblock QUIC development. This action was generally welcome by the community. Finally after OpenSSL 3.0 was finally released, the QUIC patch set was reconsidered and decided against,{{Cite web|url=https://www.mail-archive.com/openssl-project@openssl.org/msg02585.html|title=OMC Release Requirements|website=www.mail-archive.com}} causing tens to hundreds of reactions of disappointment among the community. The pull request was closed, while users felt the need to publicly express their disappointment,{{Cite web|url=https://daniel.haxx.se/blog/2021/10/25/the-quic-api-openssl-will-not-provide/|title=The QUIC API OpenSSL will not provide | daniel.haxx.se|date=October 25, 2021}} or beg operating system vendors to support the alternative QuicTLS fork,{{Cite web|url=https://alioth-lists.debian.net/pipermail/pkg-openssl-devel/2021-October/007668.html|title=[Pkg-openssl-devel] Any intent to maintain quictls ?|first=Willy|last=Tarreau|date=October 27, 2021}}{{Cite web|url=https://groups.google.com/g/linux.debian.bugs.dist/c/CAh0KLP5Euo?pli=1|title=Bug#1011391: openssl: please support quictls patchset|website=groups.google.com}} or seek for alternative solutions.{{Cite web|url=https://github.com/haproxy/haproxy/issues/680|title=HTTP/3 support · Issue #680 · haproxy/haproxy|website=GitHub}} Finally Rich Salz, co-founder of the QuicTLS fork, announced his interest in seeing an Apache project forked from QuicTLS. As of 25 February 2023 there is still no QUIC-compatible long-term supported TLS library available by default in operating systems without requiring end-users to rebuild it themselves from sources. [333] => [334] => == See also == [335] => [336] => {{Portal|Free and open-source software}} [337] => * [[Comparison of TLS implementations]] [338] => * [[Comparison of cryptography libraries]] [339] => *[[List of free and open-source software packages]] [340] => * [[POSSE project]] [341] => * [[LibreSSL]] [342] => * [[wolfSSL]] [343] => [344] => ==Notes== [345] => {{reflist|group=note}} [346] => [347] => == References == [348] => [349] => {{Reflist|}} [350] => [351] => == External links == [352] => {{Commons category}} [353] => * {{Official website|https://www.openssl.org/}} [354] => * [https://www.openssl.org/docs/manpages.html OpenSSL Manpages] [355] => * [http://h30266.www3.hpe.com/odl/i64os/opsys/vmsos84/BA554_90007/ch04s03.html OpenSSL Programming Guide] ([https://web.archive.org/web/20201204205634/http://h30266.www3.hpe.com/odl/i64os/opsys/vmsos84/BA554_90007/ch04s03.html archived]) [356] => * [https://people.gnome.org/~markmc/openssl-and-the-gpl.html The OpenSSL License and the GPL] by Mark McLoughlin [357] => * [https://developer.ibm.com/technologies/security/tutorials/l-openssl/ OpenSSL programming tutorial] [358] => * [https://wiki.openssl.org/index.php/Main_Page OpenSSL Community Wiki] [359] => [360] => {{Cryptographic software}} [361] => {{SSL/TLS}} [362] => [363] => {{DEFAULTSORT:Openssl}} [364] => [[Category:Public key infrastructure]] [365] => [[Category:1998 software]] [366] => [[Category:C (programming language) libraries]] [367] => [[Category:Cryptographic software]] [368] => [[Category:Free security software]] [369] => [[Category:Transport Layer Security implementation]] [370] => [[Category:Free software programmed in C]] [] => )
good wiki

OpenSSL

OpenSSL is an open-source software library that provides secure communication over computer networks. It implements the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols, allowing applications to encrypt data and ensure its integrity during transmission.

More about us

About

It implements the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols, allowing applications to encrypt data and ensure its integrity during transmission. Originally developed as a fork of the Secure Sockets Layer protocol in 1998, OpenSSL has become a widely-used tool for developers and system administrators for implementing secure communications in various applications such as web servers, email servers, and virtual private networks (VPNs). It supports a wide range of cryptographic algorithms and functions, including symmetric and asymmetric encryption, digital signatures, and key exchange. OpenSSL provides a comprehensive set of functions and APIs that enable users to integrate secure communication capabilities into their applications. It can be used in various programming languages such as C, C++, and Python, making it highly versatile and compatible with different platforms and operating systems. The software has gone through several major releases and updates over the years, with each version addressing security vulnerabilities, adding new features, and improving overall performance. However, OpenSSL has also faced critical security issues in the past, such as the Heartbleed bug in 2014, which exposed sensitive information in TLS encrypted communication. Nevertheless, the OpenSSL community promptly responded to address vulnerabilities by releasing patches and updates. OpenSSL has become a de facto standard for secure communication in the industry, being widely adopted by developers and organizations worldwide. It has played a significant role in ensuring the security and privacy of online communications and has become an essential component in the implementation of secure network infrastructure.

Expert Team

Vivamus eget neque lacus. Pellentesque egauris ex.

Award winning agency

Lorem ipsum, dolor sit amet consectetur elitorceat .

10 Year Exp.

Pellen tesque eget, mauris lorem iupsum neque lacus.