Hey folks,
I'd like to propose that we build a newer version of pyOpenSSL for EL7.
The version provided by base RHEL is 0.13.1. We need at least 16.1.0.
The motivation for this proposal is that at the moment, fedmsg has two
implementations of message signing and verification. The first is based
on M2Crypto and m2ext, while the second is based on cryptography and
pyOpenSSL.
The reason there are two implementations is that M2Crypto does not
support Python 3. Python 2 reaches end of life in 30 months. fedmsg is a
dependency of nearly every Infrastructure application and thus it
supporting Python 3 is critical so that we can start the process of
supporting Python 3 in our applications.
In order to provide a Python 3 build of fedmsg for EL7, we need to build
a newer pyOpenSSL. I reviewed the changelogs[0][1] and from what I can
tell APIs were only extended until pyOpenSSL-17.1.0, at which point
several backwards-incompatible changes were made. I believe we could
safely update to 17.0.0 without breaking applications that depend on it.
I've made a small list of pros and cons to doing this:
Cons
----
* Building a package provided by RHEL's base repository.
* Some risk of breaking applications and libraries using pyOpenSSL.
* We have to maintain it and keep an eye open for any CVEs.
* Even if we do this, fedmsg has to continue to carry the M2Crypto
code unless we want to stop updating fedmsg in EPEL (I'm open to
this, but I'm biased - I really don't want to maintain M2Crypto code).
Pros
----
* Applications have an easier time porting to Python 3. New applications
can seriously consider being Python 3 only.
* A single code path for signing and validating messages for our
applications.
What do people think? Is it worth the headache/risk?
[0]
https://github.com/pyca/pyopenssl/blob/master/doc/ChangeLog_old.txt#L188
[1]
https://pyopenssl.org/en/stable/changelog.html
--
Jeremy Cline
XMPP: jeremy(a)jcline.org
IRC: jcline