So there are many discussions over various hackage security schemes, and there 
are a variety of takes on the different elements of how we could make package 
distribution more secure.

However, everyone seems to agree that it would be unambiguously better if the 
cabal install executable were able to communicate over ssl.

I looked at the previous discussion on this topic [1], and it seems that 
HsOpenSSL and tls were both considered. I don’t have any experience with how 
cross-platform compatible HsOpenSSL is (i.e. if it is sufficiently easy to use 
for both Windows and OS X that we can just encourage people to “cabal install 
cabal-install” and things will just work). I don’t know if anyone else can 
speak to this? Furthermore, of course, redistributing cabal-install binaries 
could potentially be more of a pain with links to external c libraries. I’m not 
quite sure how much an issue this would be. Meanwhile, tls is certainly 
cross-platform, but there is the question about how trustworthy it is, as it is 
not nearly as widely used and vetted as openssl.

Also, we have the option of simply shelling out to curl, wget, or the 
appropriate powershell command (on windows 7 or above you get those by default).

So rather than rely on either HsOpenSSL or tls, we could also teach cabal to 
probe for one of the appropriate executables on first run, save that 
configuration, and warn if no such executable is available (allowing the user 
to fall back to http with warnings indefinitely).

I would like to pursue getting SSL into cabal by any of these three avenues. 
What do people feel about the relative tradeoffs of these options? Honestly, I 
lean towards simply using the tls package, because https is ultimately only 
going to be a complimentary aspect of our security architecture plans and not 
central to it. And a pure-haskell dependency is the most logical approach. If 
people find too much fault with that approach, I would be inclined to shell out 
as the next option, with HsOpenSSL as the last option only because I worry 
about too many “unknown unknowns” of the sort I listed above. But if others 
have more experience with these approaches, proposals are welcome!

—Gershom
_______________________________________________
cabal-devel mailing list
cabal-devel@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/cabal-devel

Reply via email to