On Linux, you can build Sage with and without openssl. If you ever hit the network you really should build with openssl(-devel) available, it will be picked up automatically. But its not a requirement. Though we should probably strongly recommend it in the installation instructions.
GnuTLS and other implementations won't solve our problem, as Python's _ssl module is specifically written against OpenSSL and can't be linked against anything else. On OSX, you can do either a) nothing => no https support, a) supply the (missing) openssl headers for the system openssl. This is still a shitty solution as it doesn't (and probably will never) support TLSv12. c) compile your own openssl implementation AND bring your own copy of the root certificates as your self-compiled openssl will not be able to access the OSX certificate store. Distributing the resulting binary has some license issues. On Thursday, December 1, 2016 at 11:25:42 PM UTC+1, Emmanuel Charpentier wrote: > > Dear Thierry, > > Thank you for this answer : you have done a large work that I planned for > my next opportunity. Comments below : > > Le jeudi 1 décembre 2016 22:56:15 UTC+1, Thierry (sage-googlesucks@xxx) a > écrit : >> >> Hi, >> >> On Sun, Nov 27, 2016 at 03:52:59AM -0800, Emmanuel Charpentier wrote: >> > OK. Let's try again : >> > I have two questions : >> > >> > 1. What are the parts (standard, optional or experimental, except, >> of >> > course, the openssl package itself) of Sage that need (directly or >> > indirectly) a secure transport layer but would accept either openSSL >> or >> > reasonable substitutes such as Gnu TLS or Mozilla's NSS ? >> > 2. What are the parts (standard, optional or experimental, except, >> of >> > course, the openssl package itself) of Sage that (directly or >> indirectly) >> > need openSSL, no substitute accepted ? >> > >> > My favorite itch to be scratched (namely R), seems to fall in the first >> > category, but I have trouble proving it : I would need a reasonable >> test >> > machine with no openSSL library to check whether R installs or not >> using >> > only Gnu TLS. All the Linux *desktop* installation I tried install >> > openSSL, one way or another (even Debian, which is notably prudish >> about >> > licensing). I would have to install an ultra-basic virtual machine. >> This >> > setup could be used to prove or disprove the dependencies of various >> parts >> > of Sage. >> >> A priori (?), openssl package should not interfere if you do not have >> libssl-dev installed. >> >> I tried building Sage 7.3 on a VM without libssl-dev, but with both >> libgnutls28-dev and libgnutls-openssl27 installed (on a Debian jessie). >> Sage builds and tests fine, but i do not have SSL support when using pip: >> >> ./sage -pip search blah >> SSLError: Can't connect to HTTPS URL because the SSL module is not >> available. >> > > This seems a serious problem, given the increasing dependency of Sage on > pip packages. This is also one aspect of more and more services migrating > to secured protocols (the new https requirement of R, which started this > epopea, is another example). > > I think that your experiment demonstrates that GnuTLS does not (yet) offer > a substitute to (at least some) OpenSSL functionalities. > > My experiments with R led me to think the same thing. > > So I think it's time to bite the bullet, acknowledge that we depend on > OpenSSL and document it. We should also test for it when building Sage. > > For the first task, I think that the right places are : > > - README.md in the root directory ; > - The developer's guide. > > > For the second task, the most logical place would be in the toplevel > configure file, after checking for a "minimal" toolset (C compiler, make, > etc..). Since at this point, we do not have pkg-config, we have to use the > Great White Shark method : bite and see what happens. In this case,, > compile, link and run a minimal program festing the existence and basic > functionality of of libssl. Ideas on what to test an how are much welcome : > I'm a bit out of my depth here... > > We could also wait for the installation of Sage's pkg-config, which makes > the ssl test trivial, but, IIRC that comes a bit late (i. e. after Sage's > python compilation), and we leave the user with partially unusable Sage's > parts, that whould have to be recompiled after a correct OpenSSL > installation. It's probably better to fail early. > > Again, your advice, criticisms and ideas are welcome. > > > > >> Ciao, >> Thierry >> > > Again, thank you ! > > -- > Emmanuel Charpentier > > >> >> >> >> > There are only two possible results, and two sets of action : >> > >> > 1. If no part of Sage depends on openSSL exclusively : fine. package >> and >> > ship Gnu TLS as a standard package, and be done with the damn thing >> > 2. If some part of Sage need openSSL exclusively : since we *can* >> use a >> > systemwise installation but cannot (pseudo-legally) *ship* it, we >> just >> > *have to* depend on this systemwide installation. Add it to the >> > prerequisites, and be done with it. >> > >> > >> > So this inventory is crucial. >> > >> > What do you know about these dependencies ? >> > >> > -- >> > Emmanuel Charpentier >> > >> > Le lundi 21 novembre 2016 12:21:31 UTC+1, Emmanuel Charpentier a écrit >> : >> > > >> > > Dear list, >> > > >> > > The fact that we can't ship openSSL (see uncountable theads in >> sage-devel >> > > and others) seems to pose more and more difficulties. See for example >> this >> > > thread < >> https://groups.google.com/forum/#!topic/sage-support/rDV9uGT2ViM> >> > > on sage-support, and especially Dima's answer >> > > < >> https://groups.google.com/d/msg/sage-support/rDV9uGT2ViM/GuKDbhSKAwAJ>, >> > > as well as this annoying ticket < >> https://trac.sagemath.org/ticket/21767>, >> > > discussed in this saga >> > > <https://groups.google.com/forum/#!topic/sage-devel/QaBdHSNJuKg> . >> > > >> > > Could'nt we add OpenSSL as a prerequisite to Sage, and it"s >> development >> > > files as a prerequisite to building Sage ? This would require of the >> user >> > > to install OpenSSL systemwide, thus making it "system software" and >> > > satisfying the strange licensing requirements that bother us. >> > > >> > > One could even do that indirectly, by requiring a systemwide libcurl >> > > supporting https : this would de facto enforce the systemwide >> installation >> > > of OpenSSL (or a reasonable facsimile). That's what I was trying to >> do in this >> > > proposal <https://trac.sagemath.org/ticket/21767#comment:41>... >> (IIRC, >> > > the problem with libcurl is also bound to OpenSSL : libcurl itself is >> not a >> > > problem. But I'll have to check : if this is true, we can require >> OpenSSL >> > > and ship libcurl which will then compile cleanly). >> > > >> > > Comments ? Especially wrt Macs, which seem to be further encumbered >> by >> > > Apple's dirty tricks... >> > > >> > > Should we have a vote ? >> > > >> > > -- >> > > 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+...@googlegroups.com. >> > To post to this group, send email to sage-...@googlegroups.com. >> > Visit this group at https://groups.google.com/group/sage-devel. >> > For more options, visit https://groups.google.com/d/optout. >> >> -- 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.