aboutsummaryrefslogtreecommitdiff
path: root/doc/doc.RPKI.CA.Configuration.rootd
diff options
context:
space:
mode:
Diffstat (limited to 'doc/doc.RPKI.CA.Configuration.rootd')
-rw-r--r--doc/doc.RPKI.CA.Configuration.rootd145
1 files changed, 145 insertions, 0 deletions
diff --git a/doc/doc.RPKI.CA.Configuration.rootd b/doc/doc.RPKI.CA.Configuration.rootd
new file mode 100644
index 00000000..4926847b
--- /dev/null
+++ b/doc/doc.RPKI.CA.Configuration.rootd
@@ -0,0 +1,145 @@
+****** rootd.conf ******
+
+***** Caveat *****
+
+rootd is, to be blunt about it, a mess. rootd was originally intended to be a
+very simple program which simplified rpkid enormously by moving one specific
+task (acting as the root CA of an RPKI certificate hierarchy) out of rpkid. As
+the specifications and code (mostly the latter) have evolved, however, this
+task has become more complicated, and rootd would have to become much more
+complicated to keep up. In particular, rootd does not speak the publication
+protocol, and requires far too many configuration parameters to work correctly.
+rootd is still useful as a test tool, where its shortcomings are largely hidden
+by automated generation of its configuration. Don't run rootd unless you're
+sure that you need to do so.
+
+OK, with that out of the way....
+
+***** Configuration *****
+
+rootd's default configuration file is the system rpki.conf file. Start rootd
+with "-c filename" to choose a different configuration file. All options are in
+the section "[rootd]". Certificates and keys may be in either DER or PEM
+format.
+
+Options:
+
+bpki-ta::
+
+ Name of file containing BPKI trust anchor. All BPKI certificate
+ validation in rootd traces back to this trust anchor.
+
+rootd-bpki-cert::
+
+ Name of file containing rootd's own BPKI certificate.
+
+rootd-bpki-key::
+
+ Name of file containing RSA key corresponding to rootd-bpki-cert.
+
+rootd-bpki-crl::
+
+ Name of file containing BPKI CRL that would cover rootd-bpki-cert had
+ it been revoked.
+
+child-bpki-cert::
+
+ Name of file containing BPKI certificate for rootd's one and only
+ child (RPKI engine to which rootd issues an RPKI certificate).
+
+server-host::
+
+ Hostname or IP address on which to listen for HTTP connections.
+ Default is localhost; don't change this unless you really know what
+ you are doing.
+
+server-port::
+
+ TCP port on which to listen for HTTP connections.
+
+rpki-root-key::
+
+ Name of file containing RSA key to use in signing resource
+ certificates.
+
+rpki-root-cert::
+
+ Name of file containing self-signed RPKI certificate corresponding to
+ rpki-root-key.
+
+rpki-root-dir::
+
+ Name of directory where rootd should write RPKI subject certificate,
+ manifest, and CRL. This needs to match pubd's configuration.
+
+rpki-subject-cert::
+
+ Name of file that rootd should use to save the one and only
+ certificate it issues. Default is "Child.cer".
+
+rpki-root-crl::
+
+ Name of file to which rootd should save its RPKI CRL. Default is
+ "Root.crl".
+
+rpki-root-manifest::
+
+ Name of file to which rootd should save its RPKI manifest. Default is
+ "Root.mft".
+
+rpki-subject-pkcs10::
+
+ Name of file that rootd should use when saving a copy of the received
+ PKCS #10 request for a resource certificate. Default is
+ "Child.pkcs10".
+
+***** Creating a root certificate *****
+
+rootd does not create the RPKI root certificate, you have to do that yourself.
+The usual way of doing this is to use the OpenSSL command line tool. The exact
+details will depend on which resources you want in the root certificate, the
+URIs for your publication server, and so forth, but the general form looks
+something like this:
+
+ [req]
+ default_bits = 2048
+ default_md = sha256
+ distinguished_name = req_dn
+ prompt = no
+ encrypt_key = no
+
+ [req_dn]
+ CN = Testbed RPKI root certificate
+
+ [x509v3_extensions]
+ basicConstraints = critical,CA:true
+ subjectKeyIdentifier = hash
+ keyUsage = critical,keyCertSign,cRLSign
+ subjectInfoAccess = @sia
+ certificatePolicies = critical,1.3.6.1.5.5.7.14.2
+ sbgp-autonomousSysNum = critical,@rfc3779_asns
+ sbgp-ipAddrBlock = critical,@rfc3997_addrs
+
+ [sia]
+ 1.3.6.1.5.5.7.48.5;URI = rsync://example.org/rpki/
+ 1.3.6.1.5.5.7.48.10;URI = rsync://example.org/rpki/root.mft
+
+ [rfc3779_asns]
+ AS.0 = 64496-64511
+ AS.1 = 65536-65551
+
+ [rfc3997_addrs]
+ IPv4.0 = 192.0.2.0/24
+ IPv4.1 = 198.51.100.0/24
+ IPv4.2 = 203.0.113.0/24
+ IPv6.0 = 2001:0DB8::/32
+
+Assuming you save this configuration in a file "root.conf", you can use it to
+generate a root certificate as follows:
+
+ $ openssl genrsa -out root.key 2048
+ $ openssl req -new -config root.conf -out root.req -key root.key
+ $ openssl x509 -req -sha256 \
+ -signkey root.key -in root.req \
+ -outform DER -out root.cer \
+ -extfile root.conf -extensions x509v3_extensions