diff --git a/configure.ac b/configure.ac index d93599c3..6159ac94 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -AC_INIT([fort],[1.6.1],[validadorfort@fortproject.net]) +AC_INIT([fort],[1.6.2],[validadorfort@fortproject.net]) AC_CONFIG_SRCDIR([src/main.c]) AM_INIT_AUTOMAKE([subdir-objects]) diff --git a/docs/_config.yml b/docs/_config.yml index 735fc3fe..6df0b48a 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -8,7 +8,7 @@ defaults: layout: "default" image: "/img/logo_validador_og.png" -fort-latest-version: 1.6.1 +fort-latest-version: 1.6.2 plugins: - jekyll-seo-tag - jekyll-sitemap diff --git a/docs/index.md b/docs/index.md index 3994a19b..ea183314 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,13 +1,12 @@ --- title: Home -descrption: FORT validator is an RPKI Relying Party, a tool offered as part of the FORT project. It performs the validation of the entire RPKI repository and serves the resulting ROAs for easy access by your routers. --- # {{ page.title }} ## Introduction -The FORT validator is an MIT-licensed RPKI Relying Party, offered as part of the [FORT project](https://www.fortproject.net/). It is a service that performs the validation of the entire RPKI repository, and which serves the resulting ROAs for easy access by your routers. +FORT validator is an MIT-licensed RPKI Relying Party, offered as part of the [FORT project](https://www.fortproject.net/). It is a service that performs the validation of the entire RPKI repository, and which serves the resulting ROAs for easy access by your routers. ## Status diff --git a/docs/intro-fort.md b/docs/intro-fort.md index ccc4735b..834c4028 100644 --- a/docs/intro-fort.md +++ b/docs/intro-fort.md @@ -13,40 +13,45 @@ Fort is an MIT-licensed RPKI Relying Party. It is a service that downloads the R The Validator is a timer that, [every once in a while](usage.html#--serverintervalvalidation), resynchronizes its [local cache of the RPKI Repository](usage.html#--local-repository), validates the resulting [certificate chains](intro-rpki.html) and stores the resulting valid ROAs in memory. The RTR [Server](usage.html#--serveraddress) (which is part of the same binary) delivers these ROAs to any requesting routers. -Fort is a command-line application intended for UNIX operating systems, written in C. (It requires a compiler that supports `-std=gnu11`.) - -## Standards Compliance - -Further information can be found in the subsections below. - -| RFC | Implemented | -|----------------------------------------------------------------------------|-------------| -| [3779](https://tools.ietf.org/html/rfc3779) (IP & AS Extensions) | 100% | -| [6350](https://tools.ietf.org/html/rfc6350) (vCard) | 0% | -| [6482](https://tools.ietf.org/html/rfc6482) (ROA) | 100% | -| [6486](https://tools.ietf.org/html/rfc6486) (Manifests) | 100% | -| [6487](https://tools.ietf.org/html/rfc6487) (Resource Certificates & CRLs) | 100% | -| [6488](https://tools.ietf.org/html/rfc6488) (Signed Objects) | 100% | -| [6493](https://tools.ietf.org/html/rfc6493) (Ghostbusters) | 100% | -| [6810](https://tools.ietf.org/html/rfc6810) (RTR Version 0) | 100% | -| [7318](https://tools.ietf.org/html/rfc7318) (Policy Qualifiers) | 100% | -| [7935](https://tools.ietf.org/html/rfc7935) (RPKI algorithms) | 100% | -| [8182](https://tools.ietf.org/html/rfc8182) (RRDP) | 100% | -| [8209](https://tools.ietf.org/html/rfc8209) (BGPSec Certificates) | 0% (This code was [disabled](https://github.com/NICMx/FORT-validator/issues/58#issuecomment-941977925) in version 1.5.2) | -| [8210](https://tools.ietf.org/html/rfc8210) (RTR Version 1) | 100% | -| [8360](https://tools.ietf.org/html/rfc8360) (Validation Reconsidered) | 100% | -| [8416](https://tools.ietf.org/html/rfc8416) (SLURM) | 100% | -| [8608](https://tools.ietf.org/html/rfc8608) (BGPsec algorithms) | 100% | -| [8630](https://tools.ietf.org/html/rfc8630) (TALs with HTTPS URIs) | 100% | - -### RFC 6350 (vCard) - -The vCard format is only used by Ghostbusters records. 6350 defines the basic vCard format, while 6493 defines additional requirements for Ghostbusters-specific vCard. - -The specific validations have been implemented, while the basic ones have not. - -## TO-DO - -- Reach 100% RFC compliance -- Trigger revalidation and SLURM reload on SIGHUP. -- Configurable origin address for outgoing requests. +Fort is a command-line application intended for UNIX operating systems, written in C. + +## Roadmap + + + +| Issue | Title | Urgency | Due release | +|-------|-------|---------|-------------| +| [issue122](https://github.com/NICMx/FORT-validator/issues/122) | New invocation mode: Decode and print RPKI file in standard output | Very High | 1.6.2 | +| [issue82](https://github.com/NICMx/FORT-validator/issues/82) | Reach 100% RFC 9286 compliance | Critical | 1.6.3 | +| [issue112](https://github.com/NICMx/FORT-validator/issues/112) | Enforce same origin for RRDP files | High | 1.6.3 | +| [issue113](https://github.com/NICMx/FORT-validator/issues/113) | Detect and properly respond to subtler RRDP session desynchronization | Medium | 1.6.3 | +| [issue114](https://github.com/NICMx/FORT-validator/issues/114) | Support automatic TA key rollover | Very High | 1.6.4 | +| [issue50](https://github.com/NICMx/FORT-validator/issues/50) | Provide prometheus endpoint | Very High | 1.6.5 | +| [issue58](https://github.com/NICMx/FORT-validator/issues/58) | Fort's validation produces no router keys | Very High | 1.6.6 | +| [issue74](https://github.com/NICMx/FORT-validator/issues/74) | Kill rsync if a timeout is exceeded | Very High | 1.6.7 | +| [issue116](https://github.com/NICMx/FORT-validator/issues/116) | SLURM review | High | - | +| [issue118](https://github.com/NICMx/FORT-validator/issues/118) | Implement validation re-reconsidered | High | - | +| [issue119](https://github.com/NICMx/FORT-validator/issues/119) | Review IRIs to file names transition | High | - | +| [issue120](https://github.com/NICMx/FORT-validator/issues/120) | Error messages review | High | - | +| [issue121](https://github.com/NICMx/FORT-validator/issues/121) | Refactor validation and operation logging | High | - | +| [issue72](https://github.com/NICMx/FORT-validator/issues/72) | Encrypt RTR | Medium | - | +| [issue73](https://github.com/NICMx/FORT-validator/issues/73) | Minimize probability of RTR session ID and serial reuse | Medium | - | +| [issue90](https://github.com/NICMx/FORT-validator/issues/90) | Add "metadata" section to json output | Medium | - | +| [issue91](https://github.com/NICMx/FORT-validator/issues/91) | Add "ta" field to ROAs in json output | Medium | - | +| [issue97](https://github.com/NICMx/FORT-validator/issues/97) | Add "incidence" fields for every nonfatal RFC incompliance | Medium | - | +| [issue117](https://github.com/NICMx/FORT-validator/issues/117) | Warn on maxLength defined on SLURM | Medium | - | +| [issue124](https://github.com/NICMx/FORT-validator/issues/124) | Atomize output files (`--output.roa` and `--output.bgpsec`) | Medium | - | +| [issue125](https://github.com/NICMx/FORT-validator/issues/125) | ASN.1 review | Medium | - | +| [issue126](https://github.com/NICMx/FORT-validator/issues/126) | Exhaustive URL validation | Medium | - | +| [issue127](https://github.com/NICMx/FORT-validator/issues/127) | Stream RRDP files | Medium | - | +| [issue128](https://github.com/NICMx/FORT-validator/issues/128) | Reuse TCP connections for HTTP requests to same server | Medium | - | +| [issue129](https://github.com/NICMx/FORT-validator/issues/129) | Rethink the thread pools | Medium | - | +| [issue130](https://github.com/NICMx/FORT-validator/issues/130) | Improve documentation | Medium | - | +| [issue40](https://github.com/NICMx/FORT-validator/issues/40) | failure scenarios, monitoring and glibc recommendations | Low | - | +| [issue42](https://github.com/NICMx/FORT-validator/issues/42) | reload feature: restart validation on SIGHUP | Low | - | +| [issue70](https://github.com/NICMx/FORT-validator/issues/70) | Do a quick temporary offline validation to prevent `No Data Available` | Low | - | +| [issue123](https://github.com/NICMx/FORT-validator/issues/123) | New invocation mode: Validate single file | Low | - | +| [issue131](https://github.com/NICMx/FORT-validator/issues/131) | Implement vCard validation | Low | - | +| [issue132](https://github.com/NICMx/FORT-validator/issues/132) | Implement RTRv2 | Low | - | +| [issue134](https://github.com/NICMx/FORT-validator/issues/134) | Implement draft-ietf-sidrops-cms-signing-time | Low | - | + diff --git a/docs/roadmap.md b/docs/roadmap.md deleted file mode 100644 index ba10e040..00000000 --- a/docs/roadmap.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Roadmap ---- - -# Roadmap - - - -| Issue | Title | Urgency | Due release | -|-------|-------|---------|-------------| -| [issue122](https://github.com/NICMx/FORT-validator/issues/122) | New invocation mode: Decode and print RPKI file in standard output | Very High | 1.6.2 | -| [issue82](https://github.com/NICMx/FORT-validator/issues/82) | Reach 100% RFC 9286 compliance | Critical | 1.6.3 | -| [issue112](https://github.com/NICMx/FORT-validator/issues/112) | Enforce same origin for RRDP files | High | 1.6.3 | -| [issue113](https://github.com/NICMx/FORT-validator/issues/113) | Detect and properly respond to subtler RRDP session desynchronization | Medium | 1.6.3 | -| [issue50](https://github.com/NICMx/FORT-validator/issues/50) | Provide prometheus endpoint | Very High | - | -| [issue58](https://github.com/NICMx/FORT-validator/issues/58) | Fort's validation produces no router keys | Very High | - | -| [issue74](https://github.com/NICMx/FORT-validator/issues/74) | Kill rsync if a timeout is exceeded | Very High | - | -| [issue114](https://github.com/NICMx/FORT-validator/issues/114) | Support automatic TA key rollover | Very High | - | -| [issue116](https://github.com/NICMx/FORT-validator/issues/116) | SLURM review | High | - | -| [issue118](https://github.com/NICMx/FORT-validator/issues/118) | Implement validation re-reconsidered | High | - | -| [issue119](https://github.com/NICMx/FORT-validator/issues/119) | Review IRIs to file names transition | High | - | -| [issue120](https://github.com/NICMx/FORT-validator/issues/120) | Error messages review | High | - | -| [issue121](https://github.com/NICMx/FORT-validator/issues/121) | Refactor validation and operation logging | High | - | -| [issue72](https://github.com/NICMx/FORT-validator/issues/72) | Encrypt RTR | Medium | - | -| [issue73](https://github.com/NICMx/FORT-validator/issues/73) | Minimize probability of RTR session ID and serial reuse | Medium | - | -| [issue90](https://github.com/NICMx/FORT-validator/issues/90) | Add "metadata" section to json output | Medium | - | -| [issue91](https://github.com/NICMx/FORT-validator/issues/91) | Add "ta" field to ROAs in json output | Medium | - | -| [issue97](https://github.com/NICMx/FORT-validator/issues/97) | Add "incidence" fields for every nonfatal RFC incompliance | Medium | - | -| [issue117](https://github.com/NICMx/FORT-validator/issues/117) | Warn on maxLength defined on SLURM | Medium | - | -| [issue124](https://github.com/NICMx/FORT-validator/issues/124) | Atomize output files (`--output.roa` and `--output.bgpsec`) | Medium | - | -| [issue125](https://github.com/NICMx/FORT-validator/issues/125) | ASN.1 review | Medium | - | -| [issue126](https://github.com/NICMx/FORT-validator/issues/126) | Exhaustive URL validation | Medium | - | -| [issue127](https://github.com/NICMx/FORT-validator/issues/127) | Stream RRDP files | Medium | - | -| [issue128](https://github.com/NICMx/FORT-validator/issues/128) | Reuse TCP connections for HTTP requests to same server | Medium | - | -| [issue129](https://github.com/NICMx/FORT-validator/issues/129) | Rethink the thread pools | Medium | - | -| [issue130](https://github.com/NICMx/FORT-validator/issues/130) | Improve documentation | Medium | - | -| [issue40](https://github.com/NICMx/FORT-validator/issues/40) | failure scenarios, monitoring and glibc recommendations | Low | - | -| [issue42](https://github.com/NICMx/FORT-validator/issues/42) | reload feature: restart validation on SIGHUP | Low | - | -| [issue70](https://github.com/NICMx/FORT-validator/issues/70) | Do a quick temporary offline validation to prevent `No Data Available` | Low | - | -| [issue123](https://github.com/NICMx/FORT-validator/issues/123) | New invocation mode: Validate single file | Low | - | -| [issue131](https://github.com/NICMx/FORT-validator/issues/131) | Implement vCard validation | Low | - | -| [issue132](https://github.com/NICMx/FORT-validator/issues/132) | Implement RTRv2 | Low | - | - diff --git a/docs/usage.md b/docs/usage.md index 59f529fc..9c3dfb3a 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -943,12 +943,11 @@ The configuration options are mostly the same as the ones from the `argv` interf
{
"tal": "/tmp/fort/tal/",
"local-repository": "/tmp/fort/repository",
- "work-offline": false,
"maximum-certificate-depth": 32,
+ "slurm": "/tmp/fort/test.slurm",
"mode": "server",
+ "work-offline": false,
"daemon": false,
- "slurm": "/tmp/fort/test.slurm",
- "asn1-decode-max-stack": 4096,
"server": {
"address": [
@@ -968,43 +967,6 @@ The configuration options are mostly the same as the ones from the `argv` interf
}
},
- "log": {
- "enabled": true,
- "output": "console",
- "level": "info",
- "tag": "Operation",
- "facility": "daemon",
- "file-name-format": "global-url",
- "color-output": false
- },
-
- "validation-log": {
- "enabled": false,
- "output": "console",
- "level": "warning",
- "tag": "Validation",
- "facility": "daemon",
- "file-name-format": "global-url",
- "color-output": false
- },
-
- "http": {
- "enabled": true,
- "priority": 60,
- "retry": {
- "count": 1,
- "interval": 4
- },
- "user-agent": "{{ page.command }}/{{ site.fort-latest-version }}",
- "max-redirs": 10,
- "connect-timeout": 30,
- "transfer-timeout": 0,
- "low-speed-limit": 100000,
- "low-speed-time": 10,
- "max-file-size": 1000000000,
- "ca-path": "/usr/local/ssl/certs"
- },
-
"rsync": {
"enabled": true,
"priority": 50,
@@ -1032,28 +994,60 @@ The configuration options are mostly the same as the ones from the `argv` interf
]
},
+ "http": {
+ "enabled": true,
+ "priority": 60,
+ "retry": {
+ "count": 1,
+ "interval": 4
+ },
+ "user-agent": "fort/1.6.2",
+ "max-redirs": 10,
+ "connect-timeout": 30,
+ "transfer-timeout": 0,
+ "low-speed-limit": 100000,
+ "low-speed-time": 10,
+ "max-file-size": 1000000000,
+ "ca-path": "/usr/local/ssl/certs"
+ },
+
+ "log": {
+ "enabled": true,
+ "output": "console",
+ "level": "info",
+ "tag": "Operation",
+ "facility": "daemon",
+ "file-name-format": "global-url",
+ "color-output": false
+ },
+
+ "validation-log": {
+ "enabled": false,
+ "output": "console",
+ "level": "warning",
+ "tag": "Validation",
+ "facility": "daemon",
+ "file-name-format": "global-url",
+ "color-output": false
+ },
+
"incidences": [
{
"name": "incid-hashalg-has-params",
"action": "ignore"
- },
- {
+ }, {
"name": "incid-obj-not-der-encoded",
"action": "ignore"
- },
- {
+ }, {
"name": "incid-file-at-mft-not-found",
"action": "error"
- },
- {
+ }, {
"name": "incid-file-at-mft-hash-not-match",
"action": "error"
- },
- {
+ }, {
"name": "incid-mft-stale",
"action": "error"
- },
- {
+ }, {
"name": "incid-crl-stale",
"action": "error"
}
@@ -1065,6 +1059,8 @@ The configuration options are mostly the same as the ones from the `argv` interf
"format": "csv"
},
+ "asn1-decode-max-stack": 4096,
+
"thread-pool": {
"server": {
"max": 20
diff --git a/man/fort.8 b/man/fort.8
index d64fcd65..803a65f2 100644
--- a/man/fort.8
+++ b/man/fort.8
@@ -1,4 +1,4 @@
-.TH fort 8 "2023-12-15" "v1.6.1" "FORT validator"
+.TH fort 8 "2024-05-24" "v1.6.2" "FORT validator"
.SH NAME
fort \- RPKI validator and RTR server
@@ -18,19 +18,19 @@ fort \- RPKI validator and RTR server
.SH DESCRIPTION
-Fort is an RPKI "Relying Party" (RP). It's an artifact that validates Route
-Origin Attestations (ROAs) and BGPsec Router Keys, by way of a Public Key
+Fort is an RPKI "Relying Party" (RP), an artifact that validates Route
+Origin Attestations (ROAs) by way of a Public Key
Infrastructure (PKI). ROAs are employed by routers, to verify BGP routing
attestations.
.P
-The main validation input is one or more Trust Anchor Locator (TAL) files
+Its main input is one or more Trust Anchor Locator (TAL) files
(\fI--tal\fR), which point to the RPKI Trust Anchors (ie. root certificates).
Fort downloads all the resources governed by the trust anchors into a local
cache (\fI--local-repository\fR), and proceeds to validate their entirety. The
-output of the validation is a set of trusted ROAs and Router Keys, which are
-printed to files (\fI--output.roa\fR and \fI--output.bgpsec\fR) and/or served to
+output of the validation is a set of VRPs (Validated ROA Payloads), which are
+served to
routers (\fI--mode=server\fR, \fI--server.address\fR, \fI--server.port\fR)
-through the RTR protocol (version 0 or 1).
+through the RTR protocol (RFC 6810).
.SH OPTIONS
.TP
@@ -1200,12 +1200,11 @@ to a specific value:
{
"tal": "/tmp/fort/tal/",
"local-repository": "/tmp/fort/repository",
- "work-offline": false,
"maximum-certificate-depth": 32,
+ "slurm": "/tmp/fort/test.slurm",
"mode": "server",
+ "work-offline": false,
"daemon": false,
- "slurm": "/tmp/fort/test.slurm",
- "asn1-decode-max-stack": 4096,
"server": {
"address": [
@@ -1225,43 +1224,6 @@ to a specific value:
}
},
- "log": {
- "enabled": true,
- "output": "console",
- "level": "info",
- "tag": "Operation",
- "facility": "daemon",
- "file-name-format": "global-url",
- "color-output": false
- },
-
- "validation-log": {
- "enabled": false,
- "output": "console",
- "level": "warning",
- "tag": "Validation",
- "facility": "daemon",
- "file-name-format": "global-url",
- "color-output": false
- },
-
- "http": {
- "enabled": true,
- "priority": 60,
- "retry": {
- "count": 1,
- "interval": 4
- },
- "user-agent": "fort/1.6.0",
- "max-redirs": 10,
- "connect-timeout": 30,
- "transfer-timeout": 0,
- "low-speed-limit": 100000,
- "low-speed-time": 10,
- "max-file-size": 1000000000,
- "ca-path": "/usr/local/ssl/certs"
- },
-
"rsync": {
"enabled": true,
"priority": 50,
@@ -1289,28 +1251,60 @@ to a specific value:
]
},
+ "http": {
+ "enabled": true,
+ "priority": 60,
+ "retry": {
+ "count": 1,
+ "interval": 4
+ },
+ "user-agent": "fort/1.6.2",
+ "max-redirs": 10,
+ "connect-timeout": 30,
+ "transfer-timeout": 0,
+ "low-speed-limit": 100000,
+ "low-speed-time": 10,
+ "max-file-size": 1000000000,
+ "ca-path": "/usr/local/ssl/certs"
+ },
+
+ "log": {
+ "enabled": true,
+ "output": "console",
+ "level": "info",
+ "tag": "Operation",
+ "facility": "daemon",
+ "file-name-format": "global-url",
+ "color-output": false
+ },
+
+ "validation-log": {
+ "enabled": false,
+ "output": "console",
+ "level": "warning",
+ "tag": "Validation",
+ "facility": "daemon",
+ "file-name-format": "global-url",
+ "color-output": false
+ },
+
"incidences": [
{
"name": "incid-hashalg-has-params",
"action": "ignore"
- },
- {
+ }, {
"name": "incid-obj-not-der-encoded",
"action": "ignore"
- },
- {
+ }, {
"name": "incid-file-at-mft-not-found",
"action": "error"
- },
- {
+ }, {
"name": "incid-file-at-mft-hash-not-match",
"action": "error"
- },
- {
+ }, {
"name": "incid-mft-stale",
"action": "error"
- },
- {
+ }, {
"name": "incid-crl-stale",
"action": "error"
}
@@ -1322,6 +1316,8 @@ to a specific value:
"format": "csv"
},
+ "asn1-decode-max-stack": 4096,
+
"thread-pool": {
"server": {
"max": 20