<?xml version="1.0" encoding="utf-8"?>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" -->
<rfc version="3" ipr="trust200902" docName="draft-timbru-sidrops-change-pubserver-01" submissionType="IETF" category="info" xml:lang="en" xmlns:xi="http://www.w3.org/2001/XInclude" indexInclude="true" consensus="true">

<front>
<title abbrev="Change Publication Server">Change Publication Server used by an RPKI CA</title><seriesInfo value="draft-timbru-sidrops-change-pubserver-01" status="informational" name="Internet-Draft"></seriesInfo>
<author initials="T." surname="Bruijnzeels" fullname="Tim Bruijnzeels"><organization>RIPE NCC</organization><address><postal><street></street>
</postal><email>tbruijnzeels@ripe.net</email>
<uri>https://www.ripe.net/</uri>
</address></author><author initials="M." surname="Hoffmann" fullname="Martin Hoffmann"><organization>NLnet Labs</organization><address><postal><street></street>
</postal><email>martin@nlnetlabs.nl</email>
<uri>https://www.nlnetlabs.nl/</uri>
</address></author><author initials="K." surname="van Hove" fullname="Koen van Hove"><organization>NLnet Labs</organization><address><postal><street></street>
</postal><email>koen@nlnetlabs.nl</email>
<uri>https://www.nlnetlabs.nl/</uri>
</address></author><date/>
<area>Internet</area>
<workgroup></workgroup>

<abstract>
<t>This document outlines how an RPKI CA can migrate from one RFC 8181 Publication
Server to another. The process is similar to the RPKI CA Key Rollover process
defined in RFC 6489, except that in this case a new location is used for the
new key.</t>
</abstract>

</front>

<middle>

<section anchor="requirements-notation"><name>Requirements notation</name>
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;,
&quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in
this document are to be interpreted as described in BCP 14 <xref target="RFC2119"></xref>
<xref target="RFC8174"></xref> when, and only when, they appear in all capitals, as shown here.</t>
</section>

<section anchor="introduction"><name>Introduction</name>
<t>There are a number of reasons why a CA may wish to migrate from its
current Publication Server to a new one.</t>
<t>One reason may be that an organization is running their own Publication
Server, but wishes to migrate to a server operated by their parent
(e.g., a Regional Internet Registry), possibly because their parent did
not offer this service when they first set up their CA, but now they do.</t>
<t>Another reason may be that the current Publication Server used by a CA
is falling behind in terms of their availability on either the publication
protocol <xref target="RFC8181"></xref>, or the public rsync or RRDP <xref target="RFC8182"></xref> repository
compared to other options.</t>
<t>If the current Publication Server has become unavailable and there is
no sign that it will become available again, then that may constitute
an even more urgent reason to migrate to a new server.</t>
<t>This document describes a modified RPKI Key Rollover <xref target="RFC6489"></xref> process
that can be used to change the Publication Server used by an RPKI CA.</t>
</section>

<section anchor="migration-process"><name>Migration Process</name>
<t>This section assumes familiarity with RPKI Key Rollovers <xref target="RFC6489"></xref>.</t>
<t>The migration process is similar to the process described in section 2 of
<xref target="RFC6489"></xref> with some notable differences that we will describe below.</t>
<t>This document uses the three CA states CURRENT, NEW and OLD as described
in section 2 of <xref target="RFC6489"></xref>.</t>

<section anchor="upload-new-repository-response"><name>Upload new Repository Response</name>
<t>Before initiating the Publication Server migration the relationship between
the publishing CA and the new server MUST be estiblished and verified.</t>
<t>First, a Publisher Request XML file MUST be retrieved from the CA. The CA
MAY re-use the same XML and BPKI TA certificate that was used for the setup
of the current Publication Server for this purpose.</t>
<t>Then, the Publication Server MAY generate a Repository Response XML file
for this CA. If the Publication Server refuses to execute this step, then
the migration MUST be cancelled.</t>
<t>When the CA receives the Respository Response XML file it MUST verify that it
can communicate with the new server by sending it an <xref target="RFC8181"></xref> list query. If
the query is successful, the new server is accepted and the CA proceeds to the
next step. If the query is unsuccessful then the migration process MUST be
cancelled.</t>
</section>

<section anchor="create-new-key"><name>Create new Key</name>
<t>The second step in the process is to generate a key pair for the NEW CA, and
then request a new certificate for it from its parent as described in steps 1
and 2 in section 2 of <xref target="RFC6489"></xref>.</t>
</section>

<section anchor="use-the-new-key"><name>Use the new Key</name>
<t>The NEW CA MUST reissue all signed certificates and RPKI signed objects as
described in section 4 of <xref target="RFC6489"></xref> and publish them at its (new) Publication
Server.</t>
<t>This is necessary because if the NEW CA were to delay re-issuance and
publication until it is promoted to become the CURRENT CA and the then OLD CA is
revoked immediately as described in steps 3-6 in section 2 of <xref target="RFC6489"></xref>, then
this would lead to a situation where no certificates and RPKI signed objects
could be found by RP software due to timing issues in fetching both
repositories. This issue does not apply to the normal <xref target="RFC6489"></xref> Key Rollover
process as all the updates would be published at the same Publication Server
in that case as a single atomic delta.</t>
</section>

<section anchor="staging-period"><name>Staging Period</name>
<t>During the staging period the CA MUST maintain signed content under both its
current and new key, and MUST ensure that these are in sync.</t>
<t>A staging period of 24 hours SHOULD be used to avoid any race conditions where
RP software was not yet able to get the content from the NEW CA repository
before revoking the CURRENT CA as per the next step in this process.</t>
<t>However, if there is any operational issue with the Publication Server and/or
its repository used by the CURRENT CA then this staging period SHOULD be
skipped.</t>
<t>After the staging period has passed, or has been skipped, the CURRENT CA becomes
the OLD CA and NEW CA becomes the CURRENT CA.</t>
</section>

<section anchor="revoke-old-ca"><name>Revoke OLD CA</name>
<t>The final step in the process is that the OLD CA MUST be revoked by sending
an <xref target="RFC6492"></xref> revocation request for its key. Furthermore, all content
for the OLD CA SHOULD be removed from the (old) Publication Server used
by it. Note that this may be impossible in cases where a non-functioning
Publication Server prompted this migration.</t>
<t>The private key for the OLD CA MUST be destroyed.</t>
</section>
</section>

<section anchor="relying-party-considerations"><name>Relying Party Considerations</name>

<section anchor="authority-information-access"><name>Authority Information Access</name>
<t>It should be noted that the Authority Information Access (AIA) URIs for
delegated CA certificates will change when the NEW CA key and repository
are used.</t>
<t>Relying Parties MAY warn when AIA URIs in the RPKI signed objects (Manifest,
ROAs, etc) and possible certificates (delegated CA or BGPSec Router
Certificates) published do not match the location of the signing CA
certificate in the new publication point, but they MUST accept them
as long as they are otherwise valid.</t>
</section>
</section>

<section anchor="implementation-status"><name>Implementation Status</name>
<t>This section is to be removed if and before this document becomes an RFC.</t>
<t>Version -00 of this document is implemented by <xref target="krill"></xref> release 0.9.2 and later.</t>
</section>

<section anchor="iana-considerations"><name>IANA Considerations</name>
<t>OID needs to be requested.</t>
</section>

<section anchor="security-considerations"><name>Security Considerations</name>
<t>TBD</t>
</section>

<section anchor="acknowledgements"><name>Acknowledgements</name>
<t>TBD</t>
</section>

</middle>

<back>
<references><name>Normative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6489.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6492.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8181.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8182.xml"/>
</references>
<references><name>Informative References</name>
<reference anchor="krill" target="https://github.com/NLnetLabs/krill">
  <front>
    <title>krill</title>
    <author>
      <organization>NLnet Labs</organization>
    </author>
  </front>
</reference>
</references>

</back>

</rfc>
