Table of Contents
- 1 Introduction
- 2 rpki.conf -- RPKI Engine Common Configuration Options
- 2.1 [autoconf] section
- 2.2 [irdbd] section
- 2.3 [myrpki] section
- 2.4 [pubd] section
- 2.5 [rootd] section
- 2.6 [rpkid] section
- 2.7 [web_portal] section
- 2.8 Debugging Options
- 2.9 CMS Message Options
- 3 rcynic.conf Configuration Options
- 4 rsyncd.conf Configuration Options
- 5 Full Table of Contents
1 Introduction
This document is a reference for the configuration files used by the
This document is prepared under Contract Number HSHQDC-14-C-B0035 for DHS S&T CSD
2 rpki.conf -- RPKI Engine Common Configuration Options
The
This file is divided into several named sections and each section has a number of key/value entries.
The name of each configuration section is enclosed in square brackets. Each entry is comprised of the entry name, an equals sign, and the entry value.
For example, the
[myrpki] irdbd_server_host = localhost irdbd_server_port = 4403
This section of the configuration-file reference is divided by the sections defined for the file itself. The sections are ordered alphabetically, not by importance of the section. Each section's entries are also ordered alphabetically by the entry's field name, again not based on the entry's importance.
In this document each configuration entry has a brief description and the default value, where there is a default. Some of the default values refer to an entry in another section. These are given in this manner:
start_rpkid = ${myrpki::run_rpkid}
The following table lists the defined sections:
[autoconf] | [rootd] | |
[irdbd] | [rpkid] | |
[myrpki] | [web_portal] | |
[pubd] |
In addition, there are options specific for debugging and CMS messages.
The
2.1 [autoconf] section
The
2.1.1 bindir
Usually
2.1.2 datarootdir
Usually
2.1.3 sbindir
Usually
2.1.4 sysconfdir
Usually
2.2 [irdbd] section
The
All
2.2.1 server-host
Host on which
server-host = ${myrpki::irdbd_server_host}
2.2.2 server-port
Port on which
server-port = ${myrpki::irdbd_server_port}
2.2.3 sql-database
SQL database name for
sql-database = ${myrpki::irdbd_sql_database}
2.2.4 sql-password
SQL database password for
sql-password = ${myrpki::irdbd_sql_password}
2.2.5 sql-username
SQL database username for
sql-username = ${myrpki::irdbd_sql_username}
2.2.6 startup-message
String to log on startup, useful when debugging a collection of
2.3 [myrpki] section
The "[myrpki]" section contains parameters used by most of the
The name "myrpki" is historical and may change in the future.
2.3.1 bpki_servers_directory
Directory for BPKI files generated by
bpki_servers_directory = ${autoconf::datarootdir}/rpki
2.3.2 handle
Every resource-holding or server-operating entity needs a
The
A handle is an identifier. Valid characters are ASCII letters, digits, hyphens, and underscores. No whitespace, non-ASCII characters, or other punctuation are allowed.
2.3.3 irdbd_server_host
DNS hostname for
irdbd_server_host = localhost
2.3.4 irdbd_server_port
Server port number for
irdbd_server_port = 4403
2.3.5 irdbd_sql_database
SQL database for
irdbd_sql_database = irdbd
2.3.6 irdbd_sql_password
SQL database password for
irdbd_sql_password = ${myrpki::shared_sql_password}
2.3.7 irdbd_sql_username
SQL database username for
irdbd_sql_username = ${myrpki::shared_sql_username}
2.3.8 pubd_contact_info
Contact information to include in offers of repository service. This only
matters when running
2.3.9 pubd_server_host
DNS hostname for
2.3.10 pubd_server_port
Server port number for
pubd_server_port = 4402
2.3.11 pubd_sql_database
SQL database name for
pubd_sql_database = pubd
2.3.12 pubd_sql_password
SQL database password for
pubd_sql_password = ${myrpki::shared_sql_password}
2.3.13 pubd_sql_username
SQL database username for
pubd_sql_username = ${myrpki::shared_sql_username}
2.3.14 publication_base_directory
Root of local directory tree where
Neither
publication_base_directory = ${autoconf::datarootdir}/rpki/publication
2.3.15 publication_root_cert_directory
Root of local directory tree where
Neither
publication_root_cert_directory = ${myrpki::publication_base_directory}.root
2.3.16 publication_root_module
publication_root_module = root
2.3.17 publication_rsync_module
publication_rsync_module = rpki
2.3.18 publication_rsync_server
Hostname and optional port number for
publication_rsync_server = ${myrpki::pubd_server_host}
2.3.19 rootd_server_host
DNS hostname for
rootd_server_host = localhost
2.3.20 rootd_server_port
Server port number for
rootd_server_port = 4401
2.3.21 rpkid_server_host
DNS hostname for
2.3.22 rpkid_server_port
Server port number for
rpkid_server_port = 4404
2.3.23 rpkid_sql_database
SQL database name for
rpkid_sql_database = rpkid
2.3.24 rpkid_sql_password
SQL database password for
rpkid_sql_password = ${myrpki::shared_sql_password}
2.3.25 rpkid_sql_username
SQL database username for
rpkid_sql_username = ${myrpki::shared_sql_username}
2.3.26 run_pubd
Indicates whether a local instance of
If your parent offer publication service, it is strongly recommended that you use their service. This recommendation may be overridden for reliability reasons or if you're certifying private address space or private Autonomous System Numbers.
The out-of-band setup protocol will attempt to negotiate publication service for you with whatever publication service your parent is using, if it can and if you let it.
run_pubd = yes
2.3.27 run_rootd
Indicates whether a local instance of
It is strongly recommended that you no enable this unless you really know what you're doing.
run_rootd = no
2.3.28 run_rpkid
Indicates whether a local instance of
It is strongly recommended that you no enable this unless you really know
what you're doing. This recommendation may be overridden if you are doing
something unusual like running a
run_rpkid = yes
2.3.29 shared_sql_password
Shared SQL database password. This will be used for all the components
that are not given a unique database password, such as in the
The installation process generates a random value for this option, so ordinarily you should have no need to change this option.
2.3.30 shared_sql_username
Shared SQL database username. This will be used for all the components
that are not given a unique database username, such as in the
shared_sql_username = rpki
2.3.31 start_irdbd
The only case where you would want to change this is when you are running the
back-end code on a different machine from one or more of the daemons, in which
case you need finer control over which daemons to start on which machines.
In such cases,
start_irdbd = ${myrpki::run_rpkid}
2.3.32 start_pubd
The only case where you would want to change this is when you are running the
back-end code on a different machine from one or more of the daemons, in which
case you need finer control over which daemons to start on which machines.
In such cases,
start_pubd = ${myrpki::run_pubd}
2.3.33 start_rootd
The only case where you would want to change this is when you are running the
back-end code on a different machine from one or more of the daemons, in which
case you need finer control over which daemons to start on which machines.
In such cases,
start_rootd = ${myrpki::run_rootd}
2.3.34 start_rpkid
The only case where you would want to change this is when you are running the
back-end code on a different machine from one or more of the daemons, in which
case you need finer control over which daemons to start on which machines. In
such cases,
start_rpkid = ${myrpki::run_rpkid}
2.4 [pubd] section
The
All
2.4.1 bpki-ta
The BPKI trust anchor. BPKI certificates and keys may be either DER or PEM
format. All BPKI certificate verification within
bpki-ta = ${myrpki::bpki_servers_directory}/ca.cer
2.4.2 irbe-cert
The back-end control client's BPKI EE certificate. BPKI certificates and keys may be either DER or PEM format. Don't change this unless you really know what you are doing.
irbe-cert = ${myrpki::bpki_servers_directory}/irbe.cer
2.4.3 pubd-cert
pubd-cert = ${myrpki::bpki_servers_directory}/pubd.cer
2.4.4 pubd-key
The private key corresponding to
pubd-key = ${myrpki::bpki_servers_directory}/pubd.key
2.4.5 publication-base
Root of the directory tree where
Neither
publication-base = ${myrpki::publication_base_directory}
2.4.6 server-host
Host on which
server-host = ${myrpki::pubd_server_host}
2.4.7 server-port
Port on which
server-port = ${myrpki::pubd_server_port}
2.4.8 sql-database
SQL database for
sql-database = ${myrpki::pubd_sql_database}
2.4.9 sql-password
SQL database password for
sql-password = ${myrpki::pubd_sql_password}
2.4.10 sql-username
SQL database username for
sql-username = ${myrpki::pubd_sql_username}
2.5 [rootd] section
The
All
As has been detailed elsewhere, it is highly unlikely that you will need to
run
2.5.1 bpki-ta
The BPKI trust anchor for the
bpki-ta = ${myrpki::bpki_servers_directory}/ca.cer
2.5.2 child-bpki-cert
BPKI certificate for
child-bpki-cert = ${myrpki::bpki_servers_directory}/child.cer
2.5.3 rootd-bpki-cert
BPKI EE certificate for
rootd-bpki-cert = ${myrpki::bpki_servers_directory}/rootd.cer
2.5.4 rootd-bpki-crl
BPKI CRL for
rootd-bpki-crl = ${myrpki::bpki_servers_directory}/ca.crl
2.5.5 rootd-bpki-key
Private key corresponding to
rootd-bpki-key = ${myrpki::bpki_servers_directory}/rootd.key
2.5.6 rpki-base-uri
rpki-base-uri = rsync://${myrpki::publication_rsync_server}/${myrpki::publication_rsync_module}/
2.5.7 rpki-class-name
The up-down protocol class name for the RPKI certificate
rpki-class-name = ${myrpki::handle}
2.5.8 rpki-root-cert
Filename (as opposed to
rpki-root-cert = ${myrpki::publication_root_cert_directory}/root.cer
2.5.9 rpki-root-cert-uri
rpki-root-cert-uri = rsync://${myrpki::publication_rsync_server}/${myrpki::publication_root_module}/root.cer
2.5.10 rpki-root-crl
Filename (relative to
rpki-root-crl = root.crl
2.5.11 rpki-root-dir
Output directory for
rpki-root-dir = ${myrpki::publication_base_directory}
2.5.12 rpki-root-key
Private key corresponding to
rpki-root-key = ${myrpki::bpki_servers_directory}/root.key
2.5.13 rpki-root-manifest
Filename (relative to
rpki-root-manifest = root.mft
2.5.14 rpki-subject-cert
Filename (relative to
rpki-subject-cert = ${myrpki::handle}.cer
2.5.15 rpki-subject-lifetime
Lifetime of the single RPKI certificate issued by
rpki-subject-lifetime = 30d
2.5.16 rpki-subject-pkcs10
Location of a copy of the PKCS #10 request that
rpki-subject-pkcs10 = ${myrpki::bpki_servers_directory}/rootd.subject.pkcs10
2.5.17 server-host
Server host on which
server-host = ${myrpki::rootd_server_host}
2.5.18 server-port
Server port on which
server-port = ${myrpki::rootd_server_port}
2.6 [rpkid] section
The
All
2.6.1 bpki-ta
The BPKI trust anchor for the
bpki-ta = ${myrpki::bpki_servers_directory}/ca.cer
2.6.2 irbe-cert
The back-end control client's BPKI EE certificate. This certificate may be in either DER or PEM format. Don't change this unless you really know what you are doing.
irbe-cert = ${myrpki::bpki_servers_directory}/irbe.cer
2.6.3 irdb-cert
The
irdb-cert = ${myrpki::bpki_servers_directory}/irdbd.cer
2.6.4 irdb-url
HTTP service URL for contacting
irdb-url = http://${myrpki::irdbd_server_host}:${myrpki::irdbd_server_port}/
2.6.5 rpkid-cert
rpkid-cert = ${myrpki::bpki_servers_directory}/rpkid.cer
2.6.6 rpkid-key
The private key corresponding to
rpkid-key = ${myrpki::bpki_servers_directory}/rpkid.key
2.6.7 server-host
Host on which
server-host = ${myrpki::rpkid_server_host}
2.6.8 server-port
Port on which
server-port = ${myrpki::rpkid_server_port}
2.6.9 sql-database
SQL database name for
sql-database = ${myrpki::rpkid_sql_database}
2.6.10 sql-password
SQL database password for
sql-password = ${myrpki::rpkid_sql_password}
2.6.11 sql-username
SQL database username for
sql-username = ${myrpki::rpkid_sql_username}
2.7 [web_portal] section
Django provides a GUI for the
All Django-specific options are in the "[web_portal]" section.
2.7.1 allowed-hosts
Name of the virtual host that runs the Django GUI, if this is not the same as the system hostname. Django's security code wants to know the name of the virtual host on which Django is running. Django will fail when it thinks it's running on a disallowed host.
This option must be set if you get an error like "Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS)".
2.7.2 secret-key
Site-specific secret key for Django.
2.7.3 sql-database
SQL database name for the web portal.
sql-database = ${myrpki::irdbd_sql_database}
2.7.4 sql-password
SQL database password for the web portal's database. The default is to use the shared SQL database password, but this option allows a separate password to be used.
sql-password = ${myrpki::irdbd_sql_password}
2.7.5 sql-username
SQL database username for the web portal's database. The default is to use the shared SQL database username, but this option allows a separate username to be used.
sql-username = ${myrpki::irdbd_sql_username}
2.8 Debugging Options
There is a set of flags that control debugging code. Most of these are boolean flags, which can be set to "true" or "false". If not specified, default values will be chosen (generally false). These are probably of interest only to the developers, but they are described below.
2.8.1 debug_cms_certs
Enable verbose logging about CMS certificates.
2.8.2 debug_http
Enable verbose HTTP debug logging.
2.8.3 enable_ipv6_clients
2.8.4 enable_ipv6_servers
Enable IPv6 HTTP server code. This option is set on by default, since listening for IPv6 connections is usually harmless.
2.8.5 enable_tracebacks
Enable Python tracebacks in logs.
2.8.6 gc_debug
Enable detailed garbage collector debugging.
2.8.7 sql_debug
Enable verbose logging about SQL operations.
2.8.8 timer_debug
Enable verbose logging of timer system.
2.8.9 use_adns
Use asynchronous DNS code. Enabling this will raise an exception if the
Asynchronous DNS is an experimental feature intended to allow higher throughput on busy servers; if you don't know why you need it, you probably don't.
2.8.10 want_persistent_client
Enable HTTP 1.1 persistence on the client side.
2.8.11 want_persistent_server
Enable HTTP 1.1 persistence on the server side.
2.9 CMS Message Options
There are also a few options which allow you to save CMS messages for audit or debugging. The save format is a simple MIME encoding in a Maildir-format mailbox. The current options are very crude; at some point finer-grain controls may be provided.
2.9.1 dump_inbound_cms
Dump verbatim copies of received CMS messages to the specified mailbox.
2.9.2 dump_outbound_cms
Dump verbatim copies of sent CMS messages to the specified mailbox.
3 rcynic.conf Configuration Options
The
All
For example, the
[rcynic] authenticated = /var/rcynic/data/auth-objs jitter = 900
This section of the configuration-file reference is describes the entries for
the
In this document each configuration entry has a brief description, the acceptable types of value for the field and the default value. Where a field has a default value, that will also be given.
3.1 allow-crl-digest-mismatch
Flag that allows processing to continue on a publication point whose manifest lists a different digest value for the CRL than the digest of the CRL currently held. Don't change this unless you really know what you are doing.
This value may be true or false. The default value is true.
3.2 allow-digest-mismatch
Flag that allows the use of otherwise valid objects which are listed in the manifest with a different digest value. Don't change this unless you really know what you are doing.
This value may be true or false. The default value is true.
3.3 allow-non-self-signed-trust-anchor
Flag that allows
This option is experimental. Do not consider enabling this option unless you
are intimately familiar with both X.509 and the internals of OpenSSL's
This value may be true or false. The default value is false.
3.4 allow-object-not-in-manifest
Flag that allows the use of otherwise valid objects which are not listed in the manifest. This is not supposed to happen, but is probably harmless.
Enabling this option increases the chance that
This value may be true or false. The default value is false.
3.5 allow-stale-crl
Flag that allows the use of CRLs which are past their
This value may be true or false. The default value is true.
3.6 allow-stale-manifest
Flag that allows the use of manifests which are past their
This value may be true or false. The default value is true.
3.7 authenticated
Path to the output directory where
The default value is
3.8 jitter
Startup jitter interval, specified in number of seconds.
This configuration option may be specified as the
3.9 lockfile
Name of lock file. If this option is empty then no lock will be used. If
The default value is to use an empty value.
3.10 log-level
Level of log messages to use.
This configuration option may be specified with the
The logging levels are given using
Description | ||
LOG_ERR | error from OS or library | |
LOG_ERR | bad usage (local error) | |
LOG_NOTICE | bad data | |
LOG_INFO | normal progress messages | |
LOG_INFO | additional information | |
LOG_DEBUG | only useful when debugging |
The default log level is log_usage_err.
3.11 max-parallel-fetches
Upper limit on the number of instances of
As of this writing, values in the range 2-4 are reasonably safe. Values above 10 have been known to cause problems.
The default value is 1.
3.12 prune
Flag allowing clean-up of old files corresponding to URIs that
Pruning only occurs when
This value may be true or false. The default value is true.
3.13 require-crl-in-manifest
Flag for rejecting publication point if the manifest does not list the CRL that covers the manifest EE certificate.
This value may be true or false. The default value is false.
3.14 rsync-early
Flag for forcing
This is an experimental feature, and currently defaults to true, which is the
old behavior. (running
Skipping the
This value may be true or false. The default value is true.
3.15 rsync-program
Path to the
The default value is
3.16 rsync-timeout
The length of time (in seconds) that
The default value is 300 (five minutes.)
3.17 run-rsync
Flag indicating whether
Generally, this option should not be changed except when building complex
topologies where
This value may be true or false. The default value is true.
3.18 syslog-facility
The default value is local0.
3.19 syslog-priority-xyz
Provides a mapping between
The
Default priority mappings:
syslog-priority-log_sys_err | err | |
syslog-priority-log_usage_err | err | |
syslog-priority-log_data_err | notice | |
syslog-priority-log_telemetry | info | |
syslog-priority-log_verbose | info | |
syslog-priority-log_debug | debug |
3.20 trust-anchor
Specify one RPKI trust anchor, represented as a local file containing an X.509 certificate in DER format. The value of this option is the pathname of the file.
This option has no default value.
3.21 trust-anchor-directory
Specify a directory containing a set of trust anchors and trust anchor
locators. Trust anchors in this directory must have filenames ending in
"
This option is an alternative to using the
This option has no default value.
3.22 trust-anchor-locator
Specify one RPKI trust anchor locator, represented as a local file in the format specified in RFC-6490. The value of this option is the pathname of the file.
This is a simple text format containing an
This option has no default value.
3.23 unauthenticated
Path to a directory where
The default value is
3.24 use-links
Flag indicating how
Using links is slightly more fragile, since anything that modifies on the unauthenticated file also modifies on the authenticated file. However, links are a bit faster and reduce the number of inodes consumed by a large data collection. Currently, copying is the default behavior, but this may change in the future.
This value may be true or false. The default value is false.
3.25 use-stderr
Flag indicating if log entries should be sent to stderr.
This option is the same as the
This value may be true or false. The default value
is false. However, if neither
3.26 use-syslog
Flag indicating if log entries should be sent to
This option is the same as the
This value may be true or false. The default value is false.
3.27 xml-summary
Enable output of a per-host summary at the end of an
This value is the filename to which the XML summary should be written.
If the given value is "-", then
This value is a filename. The default value is empty, thus no XML summary will be written.
4 rsyncd.conf Configuration Options
If the
The
The expected entries for the
comment = RPKI publication path = /some/where/publication read only = yes transfer logging = yes use chroot = no
If
4.1 path Requirements
This field must match the
Neither
5 Full Table of Contents
Sections of this document are derived or taken verbatim from Dragon Research Lab's RPKI Tools Manual.
Copyright (c) 2015, Parsons, Inc
All rights reserved