aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki/sql.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rpki/sql.py')
-rw-r--r--scripts/rpki/sql.py43
1 files changed, 42 insertions, 1 deletions
diff --git a/scripts/rpki/sql.py b/scripts/rpki/sql.py
index 7b7cf1d8..33171ff0 100644
--- a/scripts/rpki/sql.py
+++ b/scripts/rpki/sql.py
@@ -347,7 +347,48 @@ class ca_obj(sql_persistant):
return self.last_crl_sn
def rekey(self, gctx):
- """Initiate a rekey operation for this ca."""
+ """Initiate a rekey operation for this ca.
+
+ Noone who was at the meeting in Prague 2007 quite remembers why we
+ used this name for this operation, but discussion months later
+ concluded that it corresponds to the rollover operations in
+ Geoff's "Common Management Tasks" document, so that's what this
+ code does, with minor variations.
+
+ Tasks:
+
+ - Generate a new keypair.
+
+ - Request cert from parent using new keypair.
+
+ - Mark result as our active ca_detail.
+
+ - Reissue all child certs issued by this ca using the new ca_detail.
+
+ - Schedule old ca_detail for removal. Geoff specifies a
+ timer-based method, opinions vary on whether this is ok or we
+ should instead just mark the old ca_detail as deprecated and
+ leave it that way until we receive an explicit trigger from the
+ IRBE.
+
+ - Request revocation of old keypair by parent.
+
+ - Revoke all certs (children, internal use certs like manifest,
+ whatever) issued by the old keypair.
+
+ - Generate a final CRL, signed with the old keypair, listing all
+ the revoked certs, with a next CRL time after the last cert
+ signed by the old keypair will have expired.
+
+ - Destroy old keypair.
+
+ - Leave final CRL in place until its next CRL time has passed.
+
+ I have this vague recollection that there's some kind of n+1 issue
+ with CRL generation cycles, need to ask the X.509 guys whether
+ it's relevant here.
+ """
+
raise rpki.exceptions.NotImplementedYet
class ca_detail_obj(sql_persistant):