A first step <https://trac.sagemath.org/ticket/22058> towards a solution awaits your comments and review.
Plan : 1. Document OpenSSL dependency, mention the possibility of compiling againts GnuTLS (with drawbacks) 2. Get OpenSSL development libs on the machines producing Unix binary tarballs/packages. 3. (To be discussed) : create a standard "SSL" package serving as a backup, allowing compilation on OpenSSL-less machines. As done for git, this package should do nothing if OpenSSL is installed systemwide. 4. Complete curl as a standard package, which would allow : 5. Upgrade R. Pffeeeewww... Unsolved problem : What about Macs (I don't have a Mac and can't contribute). To be discussed : Cygwin (advoce from Erik Bray keenly awaited...). HTH, -- Emmanuel Charpentier Le dimanche 1 janvier 2017 02:55:42 UTC+1, Emmanuel Charpentier a écrit : > > Dear list, > > We have three separate, but interacting, difficulties with SSL/TLS support > in Sage. I'll summarize the results of the efforts of several people who > tracked them, and propose a couple of solutions. > > *I) Python now (discreetly) depends on Open SSL.* > > Their license page <https://docs.python.org/3/license.html> states : > >> The modules hashlib >> <https://docs.python.org/3/library/hashlib-blake2.html#module-hashlib>, >> posix <https://docs.python.org/3/library/posix.html#module-posix>, ssl >> <https://docs.python.org/3/library/ssl.html#module-ssl>, crypt >> <https://docs.python.org/3/library/crypt.html#module-crypt> use the >> OpenSSL library for added performance if made available by the operating >> system. Additionally, the Windows and Mac OS X installers for Python may >> include a copy of the OpenSSL libraries, so we include a copy of the >> OpenSSL license here: >> > followed by the bizarre OpenSSL license. For our purpose, the important > statement is *"use the OpenSSL library for added performance if made > available by the operating system."*. > > "Added performance, my a^htired foot : Thierry has checked the > possibilities of an OpenSSL-less Sage, and I have further checked other > possibilities. Our trials conclusively demonstrate that Gnu TLS can't be > substituted to OpenSSL for at least the following reasons : > > - Sage's pip is non-functionnal when compiled against Gnu TLS > - Ditto for Sage's git > - I understand (but have not checked) that Python's hashlib module, > which depends on openssl, is used in Sage. > > > However, contrary to my expectations, R 3.3.2 *can* be compiled in Sage > against a curl library using Gnu TLS and keep a functional HTTPS access to > R repositories. > > Consequences : > > - Sage *can*be built and run without OpenSSL support, (as long as R is > < 3.3 or some SSL support is available for R >= 3.3), but this system > will > have severe limitations (among others, no access to pip resources, > questionable support for Sage's git). > - OpenSSL can be retrofitted in such a system by installing the > openssl package, but this retrofit becomes effective after recompilation > of > python2 (at least). > > This latter "solution" is, at best, a contraption (even if something in > this direction has been proposed > <https://groups.google.com/d/msg/sage-devel/iwrF8_kGLzM/aze9lJi8nm8J> > back in 2012 to solve the very same problem). Therefore : > > - we *must at minimum* advertise this problem in the REAME.md file and > recommend checking the presence of OpenSSL, and recommend the installation > of openssl development files for Sage compilation. In this case, we would > have to : > - provide a standard package providing some HTTPS-capable SSL > support. Ideally, this package should be able to check for the presence > of > suitable systemwide libraries, and in this case, do nothing ; > - use this SSL support to provide an HTP-enabled curl for R>=3.3 > (with again, the possibility of usinf a systemwide curl library). > - We *should* acknowledge our *de facto* dependence on a systemwide > OpenSSL (in terms close to those used by the Python license). In this > case, > we would have to provide a standard curl package, with the same provisions > as before. > > The first solution, used on a system without OpenSSL, will create a > crippled Sage. Furthermore, it needs writing two standard packages, > installing widely-diffused utilities (it seems awfully difficult to install > a Debian system *sans* OpenSSL : even a freshly installed "base system + > common utilities" has openssl, on which Debian's reportbug and various > utilities depend). > > I would rather acknowledge our dependence on OpenSSL, recommend its > installation and advertise the limitations of an OpenSSL-less Sage, leaving > this possibility open to prudes... > > *II) OpenSSL has broken a lot of software.* > > OpenSSL 1.1.0 has broken a lot of OpenSSL-using software *at the source > level* (older binaries still can use the libraries, but the macro > mechanisms used in source are not compatible with those used in OpenSSL > 1.0.x, and compilations fail). > > This has happened in "our" Python ; our now-current 2.7.12 version does > not compile against OpenSSL 1.1. A patch against this version, allowing > compilation against OpenSSL 1.1 has been released after the version we used > in Trac#19735 <https://trac.sagemath.org/ticket/19735>. I tried > <https://trac.sagemath.org/ticket/22089> to port it in our current > version, and failed miserably (someone with more experience than me should > have wielded this chainsaw...). > > BTW, this has also happened to "our" git, which was easier to upgrade (see > Trac#22058 <https://trac.sagemath.org/ticket/22058>, which needs review, > BTW). > > This *is* a problem for us because OpenSSL 1.1 has now reached the stage > of diffusion in commonly-used distributions (Debian testing, which means > the next Ubuntu, etc...). It has been said that this move was (unduly) > hastened by a nearing "freeze" in Debian testing ; true or not, the move > has happened, and I don't fight the weather... (Interestingly, cygwin still > is at openSSL-devel-1.0.2j). > > I think that our best bet is the upgrade proposed in Trac#22037 > <https://trac.sagemath.org/ticket/22037>, whose development seems to have > stopped dead in its tracks after sagemath has hit Debian unstable... This > is especially important if we adopt the idea of openly depending on OpenSSL > as a solution to I). > > *III) OpenSSL is problematic on Macintoshes.* > > (This is by hearsay : I do not have access to a Mac, and don't really > understand the problem ; I'm tryin to summarize what I've read). > > Apple seems to have its own SSL implementation, and specific procedures > for updating its collection of root certificates. This makes installing a > Sage-specific SSL library problematic, and makes necessary a specific > procedure fot root certificates maintenance. > > 1) I do not know if Apple's ssl implementation is sufficient for > a) Sage and related utilities (Sage's pip, Saage's git, etc...) > b) Curl (needed bty R>=3.3, see above). > > 2) It seems also difficult to develop an utility making Apple's root > certificates usable by Sage. > > *Qiscussion and questions* > > In view of these difficulties, what should be done ? > > I think that our first priority should be to get a Python that will > compile against OpenSSL>=1.1, which will become ubiquitous sooner or later > (ant I think it will be sooner...). That means completing Trac#22037 > <https://trac.sagemath.org/ticket/22037> as soon as possible. > > In parallel, we should document the SSL problem right at the startof teh > README.md and in the developer's documentation (README.md and the > Developer's Guide). I will propose a patch to these effect of these docs. > > The SSL-using parts of Sage should be reviewed, for answers to three > questions : > > - do they compile against OpenSSL>1.1 on Linux (and other Unices) ? > - do they compile efficiently (i. e. with full functionality) against > Apple's SSL library ? > - will they compile against a future OpenSSL>=1.1 on cygwin ? > > > Platform-specific adaptations should be considered for both Macs and > Windows. > > Questions : > > - Should we openly depend on OpenSSL ? If so, how to express it ? > > I'd vote for that, and for warning of the penalties involved by the > non-use of OpenSSL, probably in terms close to those of the Python license. > > - Do we need a standard SSL package ? > > This is necessary to allow for R>3.3 if we do NOT openly depend on > OpenSSL. That's the only way to allow to upgrade to R>3.3, which has become > urgent... > > - How can we help completing Trac#22037 ? > <https://trac.sagemath.org/ticket/22037> > > and, last but not least : > > - how can we help with the platform-specific aspects of this thorny > problem ? > > Your advice, please ? > > HTH, > > -- > Emmanuel Charpentier > > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.