{"id":1280,"date":"2020-12-29T19:11:55","date_gmt":"2020-12-29T18:11:55","guid":{"rendered":"http:\/\/blogs.gentoo.org\/mgorny\/?p=1280"},"modified":"2020-12-29T19:11:55","modified_gmt":"2020-12-29T18:11:55","slug":"openssl-libressl-libretls-and-all-the-terminological-irony","status":"publish","type":"post","link":"https:\/\/blogs.gentoo.org\/mgorny\/2020\/12\/29\/openssl-libressl-libretls-and-all-the-terminological-irony\/","title":{"rendered":"OpenSSL, LibreSSL, LibreTLS and all the terminological irony"},"content":{"rendered":"<p>While we&#8217;re discussing the fate of LibreSSL, it&#8217;s worth noting how confusing the names of these packages became.  I&#8217;d like to take this opportunity to provide a short note on what&#8217;s what.<\/p>\n<p>First of all, <abbr title='Secure Sockets Layer'>SSL<\/abbr> and its successor <abbr title='Transport Layer Security'>TLS<\/abbr> are protocols used to implement network connection security.  For historical reasons, many libraries carry \u2018SSL\u2019 in their name (OpenSSL, LibreSSL, PolarSSL) but nowadays they all support TLS.<\/p>\n<p><a rel='external' href='https:\/\/www.openssl.org\/'><strong>Open<\/strong>SSL<\/a> is the \u2018original\u2019 crypto\/SSL\/TLS library.  It is maintained independently of a specific operating system.  It provides two main libraries: <em>libcrypto<\/em> and <em>libssl<\/em> (that also implements TLS).<\/p>\n<p><a rel='external' href='https:\/\/www.libressl.org\/'><strong>Libre<\/strong>SSL<\/a> is a fork of OpenSSL.  It is maintained by <strong>Open<\/strong>BSD as part of its base system.  However, the upstream also maintains LibreSSL-portable repository that provides build system and portability glue for using it on other systems.  LibreSSL provides partially compatible versions of <em>libcrypto<\/em> and <em>libssl<\/em>, and a new <em>libtls<\/em> library.  Both libssl and libtls can be used for TLS support in your applications.<\/p>\n<p><a rel='external' href='https:\/\/git.causal.agency\/libretls\/about\/'><strong>Libre<\/strong>TLS<\/a> is a lightweight fork of <em>libtls<\/em> from LibreSSL that builds it against <strong>Open<\/strong>SSL.  This makes it possible to build programs written for libtls against OpenSSL+LibreTLS instead of LibreSSL.<\/p>\n<p>So, to summarize.  <strong>Open<\/strong>SSL is the original, while <strong>Libre<\/strong>SSL is the <strong>Open<\/strong>BSD fork.  libtls is the <strong>Libre<\/strong>SSL original library, while <strong>Libre<\/strong>TLS is its fork for <strong>Open<\/strong>SSL.  Makes sense, right?  And finally, despite the name, they all implement TLS.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>While we&#8217;re discussing the fate of LibreSSL, it&#8217;s worth noting how confusing the names of these packages became. I&#8217;d like to take this opportunity to provide a short note on what&#8217;s what. First of all, SSL and its successor TLS are protocols used to implement network connection security. For historical reasons, many libraries carry \u2018SSL\u2019 &hellip; <a href=\"https:\/\/blogs.gentoo.org\/mgorny\/2020\/12\/29\/openssl-libressl-libretls-and-all-the-terminological-irony\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;OpenSSL, LibreSSL, LibreTLS and all the terminological irony&#8221;<\/span><\/a><\/p>\n","protected":false},"author":137,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[3],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/posts\/1280"}],"collection":[{"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/users\/137"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/comments?post=1280"}],"version-history":[{"count":10,"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/posts\/1280\/revisions"}],"predecessor-version":[{"id":1290,"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/posts\/1280\/revisions\/1290"}],"wp:attachment":[{"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/media?parent=1280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/categories?post=1280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/mgorny\/wp-json\/wp\/v2\/tags?post=1280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}