|
|
Message-ID: <20150611185439.GA6524@openwall.com>
Date: Thu, 11 Jun 2015 21:54:39 +0300
From: Solar Designer <solar@...nwall.com>
To: owl-dev@...ts.openwall.com
Subject: OpenSSL
Hi,
We're currently using OpenSSL 1.0.0* with relatively few, relatively
small patches:
build@...t:~/native/Owl/packages/openssl $ echo *.diff | wc -w
15
build@...t:~/native/Owl/packages/openssl $ wc *.diff
24 72 836 openssl-0.9.8b-rh-test-use-localhost.diff
25 118 942 openssl-1.0.0-beta4-rh-dtls1-abi.diff
23 87 933 openssl-1.0.0b-gosta-pkcs12-fix.diff
14 40 345 openssl-1.0.0b-owl-alt-issetugid.diff
95 308 3403 openssl-1.0.0b-rh-alt-soversion.diff
74 174 2004 openssl-1.0.0b-rh-default-paths.diff
39 111 976 openssl-1.0.0b-rh-enginesdir.diff
13 47 490 openssl-1.0.0b-rh-env-nozlib.diff
11 43 503 openssl-1.0.0b-rh-rpath.diff
49 135 1251 openssl-1.0.0b-rh-version-engines.diff
29 91 723 openssl-1.0.0b-rh-x509.diff
137 530 5425 openssl-1.0.0d-suse-env.diff
31 85 802 openssl-1.0.0m-owl-warnings.diff
42 198 2188 openssl-1.0.0m-rh-cipher-change.diff
97 457 4449 openssl-1.0.0o-rh-owl-man.diff
703 2496 25270 total
We can continue updating to new releases in the 1.0.0 branch, but it's
scheduled to be EOL'ed with the end of this year and it lacks TLS 1.1
and 1.2 support, which in turn is apparently required by recent versions
of Chrome (I'm told that it warns users when a server uses TLS 1.0 or
SSL). So it appears that we need to move to the 1.0.1 or 1.0.2 branch,
or to LibreSSL or BoringSSL.
Red Hat moved to OpenSSL 1.0.1 in RHEL 6.5:
https://securityblog.redhat.com/2013/12/11/tlsv1-1-and-tlsv1-2-now-available-in-rhel/
I looked into moving to OpenSSL 1.0.1 today.
Good news: Red Hat retained the soname when they updated to 1.0.1.
Also, RHEL7 is also still at the 1.0.1 branch, and still with the same
soname, so we could maintain compatibility with RHEL6 and RHEL7 at once.
Bad news: the number and sizes of Red Hat patches are large, and they're
all relative to 1.0.1e, which is rather old (current upstream is
1.0.1n). (Actually, some are against much older versions and still not
regenerated, but apparently they apply to 1.0.1e fine.) Also, many of
the patches look moderately problematic to me, e.g. their
openssl-1.0.0-beta5-readme-warning.patch documents
OPENSSL_NO_DEFAULT_ZLIB in top-level README, but
openssl-1.0.1e-env-zlib.patch implements OPENSSL_DEFAULT_ZLIB instead
(with OPENSSL_NO_DEFAULT_ZLIB nowhere to be found). It'd be quite some
work to clean all of this up, and it'd feel like a waste of time.
RHEL6 (openssl-1.0.1e-30.el6_6.9.src.rpm):
$ echo *.patch | wc -w
83
$ wc *.patch | tail -1
34330 132508 1050445 total
CentOS 7:
git clone https://git.centos.org/git/rpms/openssl.git -b c7 c7-openssl
Version: 1.0.1e
Release: 42%{?dist}.6
$ echo *.patch | wc -w
91
$ wc *.patch | tail -1
43186 165916 1305364 total
It looks like our options are:
1. Just keep updating within the 1.0.0 branch while we can. And I'm not
sure what's next... do our own backports of critical fixes? But this
does not give us TLS 1.1+.
2. Spend/waste time on selectively applying, forward-porting, and fixing
patches from Red Hat's package to latest 1.0.1 (currently to 1.0.1n).
3. Create a tarball of OpenSSL 1.0.1e + Red Hat's patches and treat that
as our upstream. Only apply our own tiny patches on top of that.
Drawbacks: dirty stuff (maybe worse than OpenSSL upstream's), deviation
from original upstream, delay with getting security fixes.
4. Ignore Red Hat's patches, just package upstream OpenSSL's code with
our patches. Drawback: then we're not justified to keep Red Hat's
soname, so we break binary compatibility with RHEL.
5. Move to LibreSSL or BoringSSL. This is similar to the above, except
that these have their own non-trivial pros and cons compared to OpenSSL.
6. Give up on Owl.
I feel that deciding on this should be part of a bigger decision on
where Owl is heading. Should it still maintain any RHEL compatibility?
If not, then is there sufficient reason for us to use RPM and to
continue building Owl as a Linux distro? I mean, there's lots of crap
not only in OpenSSL and RHEL, but also in RPM and in the Linux kernel,
but we chose those for compatibility. So if we start to drop
compatibility, then how far do we go? And does our project still make
sense then?
Previously, we'd choose option 2 from the list above, but at this time
I'm not sure. I'd like to minimize the effort spent on maintenance, and
to direct more effort to doing new and longer term beneficial things.
Alexander
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.