Deploy new Ubuntu archive signing key

Bug #1002589 reported by Colin Watson
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Launchpad itself
Fix Released
High
Colin Watson
ubuntu-archive-publishing
Fix Released
High
Colin Watson

Bug Description

We've generated a new Ubuntu archive signing key (4096R/3B4FE6ACC0B21F32) and would like to start using it, via a transition period in which new distroseries are signed by both keys for a while. This is going to require some Launchpad code and configuration changes.

As preparatory work, I've set default_key in /srv/launchpad.net/ubuntu-archive/gnupg-home/gpg.conf, allowing us to have both old and new keys in the keyring there without having to rely on whatever GPG does by default if there are multiple secret keys available with no default_key; and I've imported the new public/secret key into that keyring. (I've tested that --sign without -u KEYID still signs with the old key, 1024D/40976EAF437D05B5.)

Following this, though, we need some way to start selectively using the new key. The way this is done should obey the following properties:

 * Subject to testing, it should be possible to sign Ubuntu <= precise with both old and new keys.
 * After a transition period, we should start signing Ubuntu >= quantal with only the new key.
 * Key IDs must not be hardcoded in Launchpad code and I think probably ought not to live in the database either, since that would break the dogfood publisher which does not (and must not) have access to the production signing keys. It should be possible to change the signing key used for a given distroseries range independently for production and dogfood.
 * Ideally, the scheme we come up with should allow us to switch to new signing keys more frequently in future without having to think about it quite so hard.

I'd welcome comments on possible approaches. My best idea so far is to add key IDs to the archivepublisher config, but I'm not sure how to deal with the per-distroseries(-range) bit in an elegant way.

Related branches

Colin Watson (cjwatson)
description: updated
Revision history for this message
Julian Edwards (julian-edwards) wrote :

No LP code should be harmed in the making of this feature. Here's what we should do:

- ftpmaster-publish/launchpad-lazr.conf:run_parts_location: cronscripts/publishing/distro-parts
 reconfigure to use a new location and copy the existing scripts there

- edit publish-distro.d/10-sign-releases to do what you need

When happy, remove the ubuntu-specific stuff from the LP tree.

Profit!

Revision history for this message
Colin Watson (cjwatson) wrote :

Agreed. I'll take care of this, then.

Changed in launchpad:
assignee: nobody → Colin Watson (cjwatson)
Changed in launchpad:
status: New → Triaged
importance: Undecided → High
Revision history for this message
Robert Collins (lifeless) wrote : Re: [Bug 1002589] Re: Deploy new Ubuntu archive signing key

This approach seems fine, but I'd like to make small note about the
assumptions in the bug - its fine for LP to know key ids, because when
we restore to staging|dogfood etc we can (and do) run fixup code to
adjust things to the new environment (e.g. what builders are available
etc).

Whether we want a bunch of basically identical run-parts directories,
one per derived distro, is an interesting discussion, but not one
worth having until we come back to get e.g. OEM actively on derived
distros.

Revision history for this message
Colin Watson (cjwatson) wrote :

Thanks for the note about key IDs. I'd be interested in pointers to the
fixup code that runs on dogfood.

I agree that there's potential for duplicated run-parts directories in
the future. OTOH it's 136 LoC total right now and not likely to grow
hugely, and we could easily arrange for the ubuntu-archive-publishing
code to be sensitive to LPCONFIG or whatever so that it could be much
the same codebase; I suspect that experience with multiple distributions
that use this (as opposed to PPA-style native publishing all the way)
would also allow a bit more of it to be refactored into Python code.
For example, although it's small, I see no obvious reason why
publish-distro.d/20-remove-uncompressed-listings is a hook rather than
being done in the publisher code itself.

Colin Watson (cjwatson)
Changed in ubuntu-archive-publishing:
status: New → Triaged
importance: Undecided → High
assignee: nobody → Colin Watson (cjwatson)
Colin Watson (cjwatson)
Changed in launchpad:
status: Triaged → In Progress
Revision history for this message
Colin Watson (cjwatson) wrote :

The Launchpad side of this (removing distro-parts) was fixed in r15291. The ubuntu-archive-publishing task remains.

Changed in launchpad:
status: In Progress → Fix Released
Revision history for this message
Colin Watson (cjwatson) wrote :

revno: 30
fixes bug: https://launchpad.net/bugs/1002589
committer: Colin Watson <email address hidden>
branch nick: ubuntu-archive-publishing
timestamp: Thu 2012-09-20 11:10:37 +0100
message:
  Sign >= quantal with the new archive signing key (C0B21F32) as well as the old (437D05B5).

This is now deployed on production and seems to be working fine.

Changed in ubuntu-archive-publishing:
status: Triaged → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.