STARTTLS for bzr server
Denys Duchier
denys.duchier at univ-orleans.fr
Thu Aug 20 01:31:28 BST 2009
Following up on the discussion we had on #bzr:
I am interested in improving the bzr server to provide:
- encryption (done in a separate patch)
- user authentication
- operation authorization
I am employed at a (small) french university and I must unfortunately
operate under a number of restrictions that do not necessarily make
sense.
Why not SSH?
- there is NO WAY that I can be permitted to provide SSH access to
any machine on our network (regardless of whether it is physical
of virtual), or whether the access is restricted.
The mere mention of SSH access is sufficient to get a NO from the
network admins. This is not a rational requirement. It just is.
- all university personnel must be authenticated using the
university approved method. It doesn't matter that it makes no
sense; that's what you have to do. Here, it's really, really
advanced: it uses LDAP; so it must good!... right? er... right?
Management:
- we are researchers: this means we collaborate on software and
papers with other researchers on the planet (like everyone else).
we need to make it possible to (easily) add non-local
collaborators on specific projects. This is one point that is
very, very hard to sell to the admins.
Why not HTTP(S):
- it is incredibly difficult to set anything up behind the
university portal. Nothing plays well with reverse proxies;
project management software even less.
- how can you add collaborators when you are not allowed to control
the authentication configuration files?
The bzr protocol can easily be extended with "user authentication" in
the same manner as other protocols (e.g. SVN). You may think it
bizarre, but this form of authentication is easier to sell to our admins
than the alternatives.
My plan is to provide services for:
- authentication
- authorization
through hooks and plugins.
Since it is never a good idea to transmit credentials over an
unencrypted channel, I extended the bzr server with SSL encryption, and
bzr clients can now use bzrs:// URLs to connect to bzr servers with SSL
encryption. See [1] on launchpad.
[1] https://code.launchpad.net/~denys.duchier/bzr/bzr.ssl/+merge/10254
I would also like to provide opportunistic upgrade to an encrypted
channel for all bzr server connections. In this manner, a client can
connect to a bzr server (old-style) and request an upgrade to an
encrypted channel.
For many protocols, such an upgrade is usually initiated with a STARTTLS
command. The problem here is that a STARTTLS request arriving at the
server is executed at a level that knows nothing of the underlying
socket. My question is: how can we best accomodate a STARTTLS-type
request?
Cheers,
--Denys
More information about the bazaar
mailing list