LWN.net Logo

OpenSSL 1.0.0 released

From:  OpenSSL <openssl-AT-openssl.org>
To:  openssl-dev-AT-openssl.org, openssl-users-AT-openssl.org, openssl-announce-AT-openssl.org
Subject:  OpenSSL 1.0.0 released
Date:  Mon, 29 Mar 2010 16:52:21 +0200
Archive-link:  Article, Thread


   OpenSSL version 1.0.0 released
   ==============================

   OpenSSL - The Open Source toolkit for SSL/TLS
   http://www.openssl.org/

   The OpenSSL project team is pleased to announce the release of
   version 1.0.0 of our open source toolkit for SSL/TLS.  This new
   OpenSSL version is a major release and incorporates many new
   features as well as major fixes compared to 0.9.8n.  For a complete
   list of changes, please see http://www.openssl.org/source/exp/CHANGES .

   The most significant changes are:

      o RFC3280 path validation: sufficient to process PKITS tests.
      o Integrated support for PVK files and keyblobs.
      o Change default private key format to PKCS#8.
      o CMS support: able to process all examples in RFC4134
      o Streaming ASN1 encode support for PKCS#7 and CMS.
      o Multiple signer and signer add support for PKCS#7 and CMS.
      o ASN1 printing support.
      o Whirlpool hash algorithm added.
      o RFC3161 time stamp support.
      o New generalised public key API supporting ENGINE based algorithms.
      o New generalised public key API utilities.
      o New ENGINE supporting GOST algorithms.
      o SSL/TLS GOST ciphersuite support.
      o PKCS#7 and CMS GOST support.
      o RFC4279 PSK ciphersuite support.
      o Supported points format extension for ECC ciphersuites.
      o ecdsa-with-SHA224/256/384/512 signature types.
      o dsa-with-SHA224 and dsa-with-SHA256 signature types.
      o Opaque PRF Input TLS extension support.
      o Updated time routines to avoid OS limitations.

   We consider OpenSSL 1.0.0 to be the best version of OpenSSL available
   and we strongly recommend that users of older versions upgrade as
   soon as possible.  OpenSSL 1.0.0 is available for download via HTTP
   and FTP from the following master locations (you can find the various
   FTP mirrors under http://www.openssl.org/source/mirror.html):

     * http://www.openssl.org/source/
     * ftp://ftp.openssl.org/source/

   The distribution file name is:

    o openssl-1.0.0.tar.gz
      Size: 4010166
      MD5 checksum: 89eaa86e25b2845f920ec00ae4c864ed
      SHA1 checksum: 3f800ea9fa3da1c0f576d689be7dca3d55a4cb62

   The checksums were calculated using the following commands:

    openssl md5 openssl-1.0.0.tar.gz
    openssl sha1 openssl-1.0.0.tar.gz

   Yours,

   The OpenSSL Project Team...

    Mark J. Cox             Nils Larsch         Ulf Möller
    Ralf S. Engelschall     Ben Laurie          Andy Polyakov
    Dr. Stephen Henson      Richard Levitte     Geoff Thorpe
    Lutz Jänicke            Bodo Möller



______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Announcement Mailing List                 openssl-announce@openssl.org
Automated List Manager                           majordomo@openssl.org



(Log in to post comments)

OpenSSL 1.0.0 released

Posted Mar 29, 2010 22:20 UTC (Mon) by quotemstr (subscriber, #45331) [Link]

Great. Now the OpenSSL people just need to relicense the code under something GPL-compatible.

OpenSSL 1.0.0 released

Posted Mar 29, 2010 22:41 UTC (Mon) by flewellyn (subscriber, #5047) [Link]

GNU TLS exists for this reason.

OpenSSL 1.0.0 released

Posted Mar 29, 2010 23:20 UTC (Mon) by foom (subscriber, #14868) [Link]

OpenSSL 1.0.0 released

Posted Mar 30, 2010 0:10 UTC (Tue) by cowboy (subscriber, #2231) [Link]

And then, there is this

http://www.openldap.org/lists/openldap-devel/200802/msg00...

Lastly (from my perspective) is the fact that GNU TLS fails to interoperate with many other servers (TLS 1.1 negotiation), and with many of the OpenSSL to GNU TLS patches (like to OpenLDAP), you can't always get things talking nicely :(

Just say no

OpenSSL 1.0.0 released

Posted Mar 30, 2010 3:06 UTC (Tue) by foom (subscriber, #14868) [Link]

Be careful when quoting a message from 2 years ago it its criticism is still valid. That one looks like
it is not.

http://www.gnu.org/software/gnutls/manual/html_node/X_002...

— Function: int gnutls_x509_crt_set_subject_alt_name (gnutls_x509_crt_t crt,
gnutls_x509_subject_alt_name_t type, const void * data, unsigned int data_size, unsigned int flags)

OpenSSL 1.0.0 released

Posted Mar 30, 2010 3:49 UTC (Tue) by njs (guest, #40338) [Link]

Also NSS, which the Fedora people seem to be attempting (slowly?) to standardize everything on: http://fedoraproject.org/wiki/FedoraCryptoConsolidation

OpenSSL 1.0.0 released

Posted Mar 30, 2010 10:12 UTC (Tue) by buchanmilne (guest, #42315) [Link]

But it is not suitable for software which must simultaneously support client
and server operation, as it (apparently) only supports one SSL context.

This is the reason it hasn't been considered for OpenLDAP.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 18:46 UTC (Tue) by drag (subscriber, #31333) [Link]

Yet NSS is the crypto library used in the 389 Directory Server (aka Redhat Directory Server, formally Fedora Directory Server; derived from the netstcape directory services...). So somehow it's appropriate for that LDAP server even though the OpenLDAP folks do not like it.

NSS is also FIPS140-2 certified. The only other open source software that has gotten it is OpenSSL. So that makes it appropirate for any sort of institution that has to work with the USA federal government. Not terribly important for most people, but at least you know it's been verified for correctness by third party experts and this certification is critically important for companies like Redhat.

it's very mature library. It's been around for a long time. Supports hardware acceleration, smart cards, and a bunch of other little things that OpenSSL does not. (and there, are, of course things that OpenSSL supports that NSS does not)

The license is a lot better, also. NSS is triple licensed under the MPL, GPL, and LGPL giving it superior license compatibility over OpenSSL or GnuTLS.

It also has very nice python bindings that Redhat put a lot of effort into. This allows you to use Python with SSL support in GPL'd applications... which by default you technically cannot since python's normal ssl stuff is OpenSSL derived.

There is some detail in the API design that is suppose to be superior for application developers. Something about keeping the crypto aspect of things out of the hands of the application developers... which is generally a good thing since app developers rarely get that sort of thing correct. But I don't know enough to really understand everything and talk about it much. Just what I've read in the past.

Personally, I feel if everybody decided to follow Fedora's example and standardize around a NSS then we'd all be better off. Having lots of different crypto libraries is just asking for trouble since it's surprisingly difficult to get crypto right.

But actually I do end up using OpenSSL a lot more then NSS because of the nice command line client and ample online examples of OpenSSL usage. So I am not trying to knock the work the OpenSSL folks have put into it.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 18:54 UTC (Tue) by rahulsundaram (subscriber, #21946) [Link]

Red Hat is leading this effort but it is worth noting that LSB is standardizing
on NSS as well

https://ldn.linuxfoundation.org/node/5576

FIPS and GPL compatibility being two important driving factors.

OpenSSL 1.0.0 released

Posted Mar 31, 2010 15:14 UTC (Wed) by TRS-80 (subscriber, #1804) [Link]

OpenLDAP ships client libraries as well as an LDAP server, and that's where the problem with NSS is. What happens when a program links against NSS and also links against libnss-ldap that's linked with NSS? NSS' lack of context support rules it out. The OpenLDAP server can also be an LDAP client through back-ldap and so has the same problem. It's not like the NSS developers don't realise this is a problem, they've defined functions to allow different contexts, but the functions are stubs that just return.

OpenSSL 1.0.0 released

Posted Mar 29, 2010 23:12 UTC (Mon) by efexis (guest, #26355) [Link]

Yay, freedom, to do as we tell you.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 2:17 UTC (Tue) by busterb (subscriber, #560) [Link]

I've a big fan of http://www.polarssl.org/ - GPL, SSL 3.0 and TLS 1.0/1.1 seem
to work well enough, and the code could not be easier to read and use.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 3:07 UTC (Tue) by foom (subscriber, #14868) [Link]

Available under GPLv2 only: basically useless for a distro.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 3:20 UTC (Tue) by foom (subscriber, #14868) [Link]

Sorry, read too quickly. They also have a "license exemption" for FOSS licenses.

http://www.polarssl.org/license_exception

But, that has two conditions that still make it still unusable by a linux distro as a replacement for
GNUTLS/OpenSSL:

> A FOSS application developer ("you" or "your") may distribute a Derivative Work provided that
> you and the Derivative Work meet all of the following conditions:

[...]

> 4. You distribute Independent Works in object code or executable form with the complete
> corresponding machine-readable source code on the same medium and under the same FOSS
> license applying to the object code or executable forms;

Not the case for a Linux distro: source is usually not distributed on the same CD as binaries.
Furthermore, source code for many programs is available under different (less restrictive) terms
than the object code (because the object code is only available under the intersection of the
licenses for all pieces of source code.

> 5. All works that are aggregated with the Program or the Derivative Work on a medium or
> volume of storage are not derivative works of the Program, Derivative Work or FOSS
> Application, and must reasonably be considered independent and separate works.

Not the case for a Linux distro: in fact many such Derivative Works are derivative works of other
such Derivative Works.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 20:30 UTC (Tue) by samroberts (subscriber, #46749) [Link]

Most distros are chock full of GPLv2 licensed code, what is the problem here?

OpenSSL 1.0.0 released

Posted Mar 30, 2010 20:58 UTC (Tue) by Darkmere (subscriber, #53695) [Link]

Libraries licensed under GPL-2 are somewhat bad and a problematic situation for distributors.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 21:36 UTC (Tue) by foom (subscriber, #14868) [Link]

And we're not just talking about *any* old library here: SSL is used (many times indirectly) in
programs of just about every license imaginable. So, if you're going to choose an SSL
implementation to link against for another infrastructure library which is permissively licensed
(say, libldap, or libcurl), you really don't want to choose one which is only usable by GPLv2
programs.

BTW, insane thing I just noticed: gnutls is available under the LGPL, but gnutls' openssl
compatibility layer (libgnutls-openssl) is available under the GPL. Crazy...

OpenSSL 1.0.0 released

Posted Mar 30, 2010 0:09 UTC (Tue) by nix (subscriber, #2304) [Link]

So the API's stable now, right? All the damn macros are gone from the
headers, or guaranteed not to change in future?

(oh, and, GOST! Who would have thought the day would come when Soviet Cold
War-era top secret ciphers were being incorporated into free software! I'm
not sure how *useful* it is, but you must admit it's damn cool.)

OpenSSL 1.0.0 released

Posted Mar 30, 2010 1:07 UTC (Tue) by jengelh (subscriber, #33263) [Link]

Feels like adding 3DES support to crypt(3) for /etc/shadow usage.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 4:16 UTC (Tue) by buck (subscriber, #55985) [Link]

i'd settle for some documentation, whatever the state of the API

OpenSSL 1.0.0 released

Posted Mar 30, 2010 6:13 UTC (Tue) by tetromino (subscriber, #33846) [Link]

> oh, and, GOST! Who would have thought the day would come when Soviet Cold War-era top secret ciphers were being incorporated into free software! I'm not sure how *useful* it is, but you must admit it's damn cool.

Actually, OpenSSL 1.0.0 incorporates not just GOST 28147-89 (the Cold War-era DES-like symmetric cipher that you are probably referring to), but also GOST R 34.10-94 (a 256-bit hash function released in 1994), GOST R 34.10-94 (a discrete logarithm digital signature algorithm released circa 1995) and GOST R 34.10-2001 (an elliptic curve cryptography upgrade of R 34.10-94 that was released in 2001).

Incorporating these algorithms into OpenSSL is useful because it allows open-source software to be used in systems where Russian authorities mandate the use of domestically developed encryption standards.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 6:15 UTC (Tue) by tetromino (subscriber, #33846) [Link]

Typo: the hash function is GOST R 34.11-94.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 5:41 UTC (Tue) by patrick_g (subscriber, #44470) [Link]

Harsh critic of the OpenSSL code here : http://www.peereboom.us/assl/html/openssl.html

What do you think about this text ?

OpenSSL 1.0.0 released

Posted Mar 30, 2010 6:38 UTC (Tue) by MisterIO (guest, #36192) [Link]

IMO some of his claims seem right, but some others seem excessive. For example, the style is horrible, but isn't that the gnu style, which is (unfortunately) used by a bunch of other projects? Also, another example, is that if(0) used in the error path. It's used, from the code shown, only at the end of the functions, to clean in the error path and it's used so that they don't have to repeat code. It may not be elegant, but you could say the same for the use of goto, even if for cleaning the error path it's very useful.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 6:42 UTC (Tue) by MisterIO (guest, #36192) [Link]

With style I meant indentation. Yes, the rest of that style is even worse and pointless.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 8:19 UTC (Tue) by nix (subscriber, #2304) [Link]

The indentation style is most certainly *not* the GNU style. I tried to
provide an example reformatting of his code into the GNU style here, but I
can't stop the comment box eating all leading whitespace.

Among other differences: spaces before parentheses; no spaces in runs of
brackets (what were they *thinking*?); four-level indentation (tab-based
in the real thing) with braces at the two-character point (except for
top-level constructs, where the braces occur in column 0). Much much
easier to read than the OpenSSL abomination.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 9:46 UTC (Tue) by MisterIO (guest, #36192) [Link]

I still see many similarities between the openssl and gnu style(indentation) and frankly I consider the gnu style an abomination in itself. The linux kernel style is so much more readable! That said, the rest of the openssl style is a mess, like the horrible pseudorandom use of capital letters.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 16:48 UTC (Tue) by vonbrand (subscriber, #4458) [Link]

Where I'd see this kind of construct the err: label and what follows was at the end of the function, after all normal returns. If used consistently, there is no hunting around "where are errors handled" (and can use nesting, various labels which do part of cleanup and fall into the next), no head scratching about a if(0) or other strange constructs.

This is awful...

OpenSSL 1.0.0 released

Posted Mar 30, 2010 18:42 UTC (Tue) by MisterIO (guest, #36192) [Link]

Actually there's nothing strange about it(about that if(0), I mean). I've never used it that way, but I could understand its meaning immediately. Sure, the err label is usually at the end, after the return, but what happens if you need to do the normal cleanup, that you do in the normal path before the return, in the error path too? It happens that you need to repeat code, like this:

normal_cleanup;
return

:err
error_cleanup;
normal_cleanup;

Instead, with that if(0) construct, you can do this:

if (0) {
:err error_cleanup;
}

normal_cleanup;
return;

To me it seems clear and simple. The only problem could be if it screws up some static checker or some software to follow the flow of your code.

OpenSSL 1.0.0 released

Posted Apr 1, 2010 17:47 UTC (Thu) by vonbrand (subscriber, #4458) [Link]

What is wrong with e.g.

plain_normal_processing;

out:
normal_cleanup;
return;

err:
error_cleanup;
goto out;
BTW, if you worry an if(0) {...} might confuse a static checker or such, it will confuse the random programmer just as much ;-)

OpenSSL 1.0.0 released

Posted Apr 1, 2010 19:09 UTC (Thu) by MisterIO (guest, #36192) [Link]

I have no problems with any of those approaches.I sure never said that was the only one possible, in fact I had already seen the one you propose here. I just said I had never seen the if(0) approach(for this problem) before, yet I could understand its meaning immediately, which for me means that it's simple and clear. That's all.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 7:09 UTC (Tue) by rsidd (subscriber, #2582) [Link]

Perhaps the OpenSSL source is written deliberately to keep average programmers away? Cryptography is hard. Remember when Debian's ill- considered patch compromised millions of SSH servers?

It is not clear to me at all why the guy was messing with the OpenSSL source.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 7:13 UTC (Tue) by dlang (✭ supporter ✭, #313) [Link]

The guy found a real bug in the source. His fix was wrong, but it was a real bug he was trying to fix.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 8:03 UTC (Tue) by rsidd (subscriber, #2582) [Link]

What bug?

OpenSSL 1.0.0 released

Posted Mar 30, 2010 8:10 UTC (Tue) by hppnq (guest, #14462) [Link]

Hmm. This guy spent eight hours on producing three scripts with messed up hashbangs to perform the most basic of all SSL operations, and another full day on looking for main() in openssl(1).

So, I just skimmed over the rant, but I would be very surprised if this guy actually found a bug in OpenSSL. What is it?

OpenSSL 1.0.0 released

Posted Mar 30, 2010 13:46 UTC (Tue) by jond (subscriber, #37669) [Link]

The OP was replying to a comment about the Debian SSL debacle. s/he was
referring to the Debian patch as attempting to fix a real bug in openssl,
not the rant.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 14:13 UTC (Tue) by hppnq (guest, #14462) [Link]

Ah yes, thanks for pointing that out, I misread the "guy" references. ;-)

OpenSSL 1.0.0 released

Posted Mar 30, 2010 13:49 UTC (Tue) by jbardin (guest, #54917) [Link]

A real bug only as reported by valgrind. OpenSSH was purposely using a chunk of unallocated memory as part of its source of entropy.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 14:36 UTC (Tue) by mpr22 (subscriber, #60784) [Link]

To my mind, if it didn't have a suitably forceful comment attached to it, it was a bug even if it was deliberate. ("Yes, we really do mean to use uninitialized memory as an entropy source. Yes, we know code validation tools will whine about it.")

OpenSSL 1.0.0 released

Posted Mar 30, 2010 16:53 UTC (Tue) by vonbrand (subscriber, #4458) [Link]

"Uninitialized memory" != "random contents". This was not a valid entropy source.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 7:56 UTC (Tue) by MisterIO (guest, #36192) [Link]

This argument is so wrong!

OpenSSL 1.0.0 released

Posted Mar 30, 2010 8:36 UTC (Tue) by mpr22 (subscriber, #60784) [Link]

Your argument fails for the simple reason that it clearly didn't keep that guy away. (I'm inclined to say that it also amounts to advocating security through obscurity.)

My recollection that guy did find something that could fairly be called a bug (something along the lines of an array being algorithmically transformed without first being initialized to a state of known quality) and fix it. Unfortunately, another piece of (entirely correct) code looked sufficiently like the buggy code that he thought it was broken in the same way and "fixed" it, resulting in the Debian keystrength fiasco.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 9:39 UTC (Tue) by rsidd (subscriber, #2582) [Link]

The Debian guy was a different guy. (I hope.) I was, partly, being
facetious. But though OpenSSL can't stop random people poking around in
their code (it is open source, after all), the high level of expertise
required would hopefully deter local modifications downstream (like the
Debian incident).

OpenSSL 1.0.0 released

Posted Mar 30, 2010 10:38 UTC (Tue) by patrick_g (subscriber, #44470) [Link]

>>> the high level of expertise required would hopefully deter local modifications downstream (like the Debian incident).

Well Marco Peereboom (author of the text "OpenSSL is written by monkeys") is an OpenBSD hacker so he must have the knowledge to change the code.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 11:49 UTC (Tue) by hppnq (guest, #14462) [Link]

You may want to reconsider.

Unhindered by what can only be called a limited grasp of the delicate material at hand, Mr Peereboom wrote a library that apparently is supposed to replace OpenSSL, called assl (forget that name), which currently targets a dazzling two platforms. It does not seem to add anything useful, but it does contain roughly 10% goto statements, 90% of those in a macro.

I am not sure whether this code is in OpenBSD. Certainly, it does not belong there. Oh, and I forgot to congratulate the OpenSSL team on an excellent piece of work!

OpenSSL 1.0.0 released

Posted Mar 30, 2010 12:07 UTC (Tue) by rsidd (subscriber, #2582) [Link]

I just looked it up. It's not supposed to replace OpenSSL. It's a wrapper
offering an alternative API. And there's nothing wrong with GOTO statements
when used appropriately: the linux kernel has plenty of those too. It is
often the cleanest and most readable way to break out of nested loops.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 14:09 UTC (Tue) by hppnq (guest, #14462) [Link]

From the project webpage and the source code, I can only conclude that the assl API is definitely meant to replace the OpenSSL API, which you are quite strongly encouraged not to use.

Not even the author would dream of replacing the OpenSSL implementation with his own. It speaks volumes that the quite trivial problem he set out to solve has, of course, not been implemented in his library. Instead, he chose to partially implement what was already there, poorly. The multiple goto's in every subroutine are indicative of the general quality of the code.

I would recommend that newbie SSL application programmers take some time and learn to use the OpenSSL API -- it is not that hard and you will come away with precious knowledge. For a quick and dirty job, read the sample code that comes with OpenSSL instead, and live happily.

OpenSSL 1.0.0 released

Posted Mar 30, 2010 16:51 UTC (Tue) by vonbrand (subscriber, #4458) [Link]

If cryptography is hard to get right, don't make it even harder to follow by obfuscated programming. I'd very much want to be able to read the code and check it is doing it right myself.

OpenSSL 1.0.0 released

Posted Mar 31, 2010 4:39 UTC (Wed) by njs (guest, #40338) [Link]

> Perhaps the OpenSSL source is written deliberately to keep average programmers away?

It's an interesting thought, but if you pick an average awesome programmer and an average awful programmer, I'm pretty sure it's the latter that is more willing to work with horribly ugly code (certainly they produce the bulk of it).

OpenSSL 1.0.0 released

Posted Mar 31, 2010 4:49 UTC (Wed) by rsidd (subscriber, #2582) [Link]

I think ugliness is in the eye of the beholder. Take a look at the getopt macros in old version of FreeBSD's chat.c (sadly replaced with "real" getopt since 2008).

OpenSSL 1.0.0 released

Posted Mar 31, 2010 13:12 UTC (Wed) by nix (subscriber, #2304) [Link]

Even the commit comments describe them as 'IOCCC-worthy'. They are. Ow. I
like the way that every single bit of whitespace was removed, perhaps
because the code runs faster without all those annoying spaces in the
source code.

OpenSSL 1.0.0 released

Posted Apr 1, 2010 19:16 UTC (Thu) by zooko (subscriber, #2589) [Link]

There is also http://www.yassl.com .

OpenSSL 1.0.0 released

Posted Apr 1, 2010 19:40 UTC (Thu) by foom (subscriber, #14868) [Link]

...with the same licensing problem as PolarSSL. :(

Copyright © 2010, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds