aboutsummaryrefslogtreecommitdiff
path: root/ca/rpki-confgen.xml
blob: 14f160ab4b3051d58b84ad2d81eecc8796f177d1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
<!-- -*- SGML -*-
  $Id$
  
  Documented option definitions for rpki-confgen to use in generating
  rpki.conf and TracWiki documentation.

  Copyright (C) 2009-2013 Internet Systems Consortium ("ISC")
  
  Permission to use, copy, modify, and distribute this software for any
  purpose with or without fee is hereby granted, provided that the above
  copyright notice and this permission notice appear in all copies.
  
  THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  PERFORMANCE OF THIS SOFTWARE.
-->

<configuration ident = "$Id$">

  <section name = "myrpki">

    <doc>
      The "`[myrpki]`" section contains all the parameters that you
      really need to configure.  The name "`myrpki`" is historical and
      may change in the future.
    </doc>

    <option name  = "handle">
      <doc>
	Every resource-holding or server-operating entity needs a
	"handle", which is just an identifier by which the entity
	calls itself.  Handles do not need to be globally unique, but
	should be chosen with an eye towards debugging operational
	problems: it's best if you use a handle that your parents and
	children will recognize as being you.
       </doc>
      <doc>
        The "`handle`" option in the "`[myrpki]`" section specifies the
	default handle for this installation.  Previous versions of
	the CA tools required a separate configuration file, each with
	its own handle setting, for each hosted entity.  The current
	code allows the current handle to be selected at runtime in
	both the GUI and command line user interface tools, so the
	handle setting here is just the default when you don't set one
	explictly.  In the long run, this option may go away entirely,
	but for now you need to set this.
      </doc>
      <doc>
	Syntax is an identifier (ASCII letters, digits, hyphen,
        underscore -- no whitespace, non-ASCII characters, or other
        punctuation).
      </doc>
    </option>

    <option name  = "bpki_servers_directory"
            value = "${autoconf::datarootdir}/rpki">
      <doc>
        Directory for BPKI files generated by rpkic and used by rpkid
	and pubd.  You will not normally need to change this.
      </doc>
    </option>

    <option name  = "run_rpkid"
            value = "yes">
      <doc>
        Whether you want to run your own copy of rpkid (and irdbd).
	Leave this alone unless you're doing something unusual like
	running a pubd-only installation.
      </doc>
    </option>

    <option name  = "rpkid_server_host">
      <doc>
        DNS hostname for rpkid.  In most cases, this must resolve to a
	publicly-reachable address to be useful, as your RPKI children
	will need to contact your rpkid at this address.
      </doc>
    </option>

    <option name  = "rpkid_server_port"
            value = "4404">
      <doc>
        Server port number for rpkid.  This can be any legal TCP port
        number that you're not using for something else.
      </doc>
    </option>

    <option name  = "irdbd_server_host"
            value = "localhost">
      <doc>
        DNS hostname for irdbd, or "`localhost`".  This should be
        "`localhost`" unless you really know what you are doing.
      </doc>
    </option>

    <option name  = "irdbd_server_port"
            value = "4403">
      <doc>
        Server port number for irdbd.  This can be any legal TCP port
        number that you're not using for something else.
      </doc>
    </option>

    <option name  = "run_pubd"
            value = "yes">
      <doc>
        Whether you want to run your own copy of pubd.  In general,
        it's best to use your parent's pubd if your parent allows you
        to do so, because this will reduce the overall number of
        publication sites from which relying parties will need to
        retrieve data.  However, not all parents offer publication
        service, or you may need to run pubd yourself for reliability
        reasons, or because you're certifying private address space or
        private Autonomous System Numbers.
      </doc>
      <doc>
	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.
      </doc>
    </option>

    <option name  = "pubd_server_host">
      <doc>
        DNS hostname for pubd, if you're running it.  This must
        resolve to a publicly reachable address to be useful.
      </doc>
    </option>

    <option name  = "pubd_server_port"
            value = "4402">
      <doc>
        Server port number for pubd.  This can be any legal TCP port
        number that you're not using for something else.
      </doc>
    </option>

    <option name  = "pubd_contact_info">
      <doc>
        Contact information to include in offers of repository
        service.  This only matters when you're running pubd.  This
        should be a human readable string, perhaps containing an email
        address or URL.
      </doc>
    </option>

    <option name  = "run_rootd"
            value = "no">
      <doc>
        Whether you want to run your very own copy of rootd.  Don't
        enable this unless you really know what you're doing.
      </doc>
    </option>

    <option name  = "rootd_server_host"
            value = "localhost">
      <doc>
        DNS hostname for rootd, if you're running it.  This should be
        localhost unless you really know what you are doing.
      </doc>
    </option>

    <option name  = "rootd_server_port"
            value = "4401">
      <doc>
        Server port number for rootd, if you're running it.  This can
        be any legal TCP port number that you're not using for
        something else.
      </doc>
    </option>

    <option name  = "publication_base_directory"
            value = "${autoconf::datarootdir}/rpki/publication">
      <doc>
        Root of local directory tree where pubd should write out published
        data.  You need to configure this, and the configuration should
        match up with the directory where you point rsyncd.  Neither pubd
        nor rsyncd much cares //where// you tell it to put this stuff, the
        important thing is that the rsync URIs in generated
        certificates match up with the published objects so that relying
        parties can find and verify rpkid's published outputs.
      </doc>
    </option>

    <option name  = "rrdp_publication_base_directory"
            value = "${autoconf::datarootdir}/rpki/rrdp-publication">
      <doc>
        Root of local directory tree where pubd should write out RRDP
        files.  You need to configure this, and the configuration
        should match up with the directory where you point the web
        server (usually Apache) that serves the RRDP files.  Neither
        pubd nor Apache much cares //where// you tell it to put this
        stuff, the important thing is that all the URIs match up so
        that relying parties can find and verify rpkid's published
        outputs.
      </doc>
    </option>

    <option name  = "publication_rsync_module"
            value = "rpki">
      <doc>
        rsyncd module name corresponding to publication_base_directory.
        This has to match the module you configured into `rsyncd.conf`.
        Leave this alone unless you have some need to change it.
      </doc>
    </option>

    <option name  = "publication_rsync_server"
            value = "${myrpki::pubd_server_host}">
      <doc>
        Hostname and optional port number for rsync URIs.  In most cases
        this should just be the same value as pubd_server_host.
      </doc>
    </option>

    <option name  = "start_rpkid"
            value = "${myrpki::run_rpkid}">
      <doc>
        rpkid startup control.  This should usually have the same value as
        run_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,
        run_rpkid controls whether the back-end code is doing things to
        manage rpkid, while start_rpkid controls whether
        rpki-start-servers attempts to start rpkid on this machine.
      </doc>
    </option>

    <option name  = "start_irdbd"
            value = "${myrpki::run_rpkid}">
      <doc>
        irdbd startup control.  This should usually have the same value as
        run_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,
        run_rpkid controls whether the back-end code is doing things to
        manage rpkid, while start_irdbd controls whether
        rpki-start-servers attempts to start irdbd on this machine.
      </doc>
    </option>

    <option name  = "start_pubd"
            value = "${myrpki::run_pubd}">
      <doc>
        pubd startup control.  This should usually have the same value as
        run_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,
        run_pubd controls whether the back-end code is doing things to
        manage pubd, while start_pubd controls whether
        rpki-start-servers attempts to start pubd on this machine.
      </doc>
    </option>

    <option name  = "start_rootd"
            value = "${myrpki::run_rootd}">
      <doc>
        rootd startup control.  This should usually have the same value as
        run_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,
        run_rootd controls whether the back-end code is doing things to
        manage rootd, while start_rootd controls whether
        rpki-start-servers attempts to start rootd on this machine.
      </doc>
    </option>

    <option name  = "shared_sql_username"
            value = "rpki">
      <doc>
        If you're comfortable with having all of the databases use the
        same MySQL username, set that value here.  The default setting
        of this variable should be fine.
      </doc>
    </option>

    <option name  = "shared_sql_password">
      <doc>
        If you're comfortable with having all of the databases use the
        same MySQL password, set that value here.  You should use a
        locally generated password either here or in the individual
        settings below.  The installation process generates a random
        value for this option, which satisfies this requirement, so
        ordinarily you should have no need to change this option.
      </doc>
    </option>

    <option name  = "rpkid_sql_database"
            value = "rpkid">
      <doc>
        SQL database name for rpkid's database.  The default setting of
        this variable should be fine.
      </doc>
    </option>

    <option name  = "rpkid_sql_username"
            value = "${myrpki::shared_sql_username}">
      <doc>
        If you want to use a separate SQL username for rpkid's database,
        set it here.
      </doc>
    </option>

    <option name  = "rpkid_sql_password"
            value = "${myrpki::shared_sql_password}">
      <doc>
        If you want to use a separate SQL password for rpkid's database,
        set it here.
      </doc>
    </option>

    <option name  = "irdbd_sql_database"
            value = "irdbd">
      <doc>
        SQL database for irdbd's database.  The default setting of this
        variable should be fine.
      </doc>
    </option>

    <option name  = "irdbd_sql_username"
            value = "${myrpki::shared_sql_username}">
      <doc>
        If you want to use a separate SQL username for irdbd's database,
        set it here.
      </doc>
    </option>

    <option name  = "irdbd_sql_password"
            value = "${myrpki::shared_sql_password}">
      <doc>
        If you want to use a separate SQL password for irdbd's database,
        set it here.
      </doc>
    </option>

    <option name  = "pubd_sql_database"
            value = "pubd">
      <doc>
        SQL database name for pubd's database.  The default setting of
        this variable should be fine.
      </doc>
    </option>

    <option name  = "pubd_sql_username"
            value = "${myrpki::shared_sql_username}">
      <doc>
        If you want to use a separate SQL username for pubd's database,
        set it here.
      </doc>
    </option>

    <option name  = "pubd_sql_password"
            value = "${myrpki::shared_sql_password}">
      <doc>
        If you want to use a separate SQL password for pubd's database,
        set it here.
      </doc>
    </option>

  </section>

  <section name = "rpkid">

    <doc>
      rpkid's default config file is the system `rpki.conf` file.
      Start rpkid with "`-c filename`" to choose a different config
      file.  All options are in the "`[rpkid]`" section.  BPKI
      Certificates and keys may be in either DER or PEM format.
    </doc>

    <option name  = "sql-database"
            value = "${myrpki::rpkid_sql_database}">
      <doc>
        MySQL database name for rpkid.
      </doc>
    </option>

    <option name  = "sql-username"
            value = "${myrpki::rpkid_sql_username}">
      <doc>
        MySQL user name for rpkid.
      </doc>
    </option>

    <option name  = "sql-password"
            value = "${myrpki::rpkid_sql_password}">
      <doc>
        MySQL password for rpkid.
      </doc>
    </option>

    <option name  = "server-host"
            value = "${myrpki::rpkid_server_host}">
      <doc>
        Host on which rpkid should listen for HTTP service requests.
      </doc>
    </option>

    <option name  = "server-port"
            value = "${myrpki::rpkid_server_port}">
      <doc>
        Port on which rpkid should listen for HTTP service requests.
      </doc>
    </option>

    <option name  = "irdb-url"
            value = "http://${myrpki::irdbd_server_host}:${myrpki::irdbd_server_port}/">
      <doc>
        HTTP service URL rpkid should use to contact irdbd.  If irdbd is
        running on the same machine as rpkid, this can and probably should
        be a loopback URL, since nobody but rpkid needs to talk to irdbd.
      </doc>
    </option>

    <option name  = "bpki-ta"
            value = "${myrpki::bpki_servers_directory}/ca.cer">
      <doc>
        Where rpkid should look for the BPKI trust anchor.  All BPKI
	certificate verification within rpkid traces back to this
	trust anchor.  Don't change this unless you really know what
	you are doing.
      </doc>
    </option>

    <option name  = "rpkid-cert"
            value = "${myrpki::bpki_servers_directory}/rpkid.cer">
      <doc>
        Where rpkid should look for its own BPKI EE certificate.  Don't
        change this unless you really know what you are doing.
      </doc>
    </option>

    <option name  = "rpkid-key"
            value = "${myrpki::bpki_servers_directory}/rpkid.key">
      <doc>
        Where rpkid should look for the private key corresponding to its
        own BPKI EE certificate.  Don't change this unless you really know
        what you are doing.
      </doc>
    </option>

    <option name  = "irdb-cert"
            value = "${myrpki::bpki_servers_directory}/irdbd.cer">
      <doc>
        Where rpkid should look for irdbd's BPKI EE certificate.
        Don't change this unless you really know what you are doing.
      </doc>
    </option>

    <option name  = "irbe-cert"
            value = "${myrpki::bpki_servers_directory}/irbe.cer">
      <doc>
        Where rpkid should look for the back-end control client's BPKI EE
        certificate.  Don't change this unless you really know what you
        are doing.
      </doc>
    </option>

  </section>

  <section name = "irdbd">

    <doc>
      irdbd's default configuration file is the system `rpki.conf`
      file.  Start irdbd with "`-c filename`" to choose a different
      configuration file.  All options are in the "`[irdbd]`" section.
    </doc>

    <doc>
      Since irdbd is part of the back-end system, it has direct access to
      the back-end's SQL database, and thus is able to pull its own BPKI
      configuration directly from the database, and thus needs a bit less
      configuration than the other daemons.
    </doc>

    <option name  = "sql-database"
            value = "${myrpki::irdbd_sql_database}">
      <doc>
        MySQL database name for irdbd.
      </doc>
    </option>

    <option name  = "sql-username"
            value = "${myrpki::irdbd_sql_username}">
      <doc>
        MySQL user name for irdbd.
      </doc>
    </option>

    <option name  = "sql-password"
            value = "${myrpki::irdbd_sql_password}">
      <doc>
        MySQL password for irdbd.
      </doc>
    </option>

    <option name  = "server-host"
            value = "${myrpki::irdbd_server_host}">
      <doc>
        Host on which irdbd should listen for HTTP service requests.
      </doc>
    </option>

    <option name  = "server-port"
            value = "${myrpki::irdbd_server_port}">
      <doc>
        Port on which irdbd should listen for HTTP service requests.
      </doc>
    </option>

    <option name  = "startup-message">
      <doc>
	String to log on startup, useful when debugging a collection
	of irdbd instances at once.
      </doc>
    </option>

  </section>

  <section name = "pubd">

    <doc>
      pubd's default configuration file is the system `rpki.conf`
      file.  Start pubd with "`-c filename`" to choose a different
      configuration file.  All options are in the "`[pubd]`" section.
      BPKI certificates and keys may be either DER or PEM format.
    </doc>

    <option name  = "sql-database"
            value = "${myrpki::pubd_sql_database}">
      <doc>
        MySQL database name for pubd.
      </doc>
    </option>

    <option name  = "sql-username"
            value = "${myrpki::pubd_sql_username}">
      <doc>
        MySQL user name for pubd.
      </doc>
    </option>

    <option name  = "sql-password"
            value = "${myrpki::pubd_sql_password}">
      <doc>
        MySQL password for pubd.
      </doc>
    </option>

    <option name  = "publication-base"
            value = "${myrpki::publication_base_directory}">
      <doc>
        Root of directory tree where pubd should write out published data.
        You need to configure this, and the configuration should match up
        with the directory where you point rsyncd.  Neither pubd nor rsyncd
        much cares -where- you tell them to put this stuff, the important
        thing is that the rsync URIs in generated certificates match up
        with the published objects so that relying parties can find and
        verify rpkid's published outputs.
      </doc>
    </option>

    <option name  = "rrdp-publication-base"
	    value = "${myrpki::rrdp_publication_base_directory}">
      <doc>
        Root of local directory tree where pubd should write out RRDP
        files.  You need to configure this, and the configuration
        should match up with the directory where you point the web
        server (usually Apache) that serves the RRDP files.  Neither
        pubd nor Apache much cares //where// you tell it to put this
        stuff, the important thing is that all the URIs match up so
        that relying parties can find and verify rpkid's published
        outputs.
      </doc>
    </option>

    <option name  = "server-host"
            value = "${myrpki::pubd_server_host}">
      <doc>
        Host on which pubd should listen for HTTP service requests.
      </doc>
    </option>

    <option name  = "server-port"
            value = "${myrpki::pubd_server_port}">
      <doc>
        Port on which pubd should listen for HTTP service requests.
      </doc>
    </option>

    <option name  = "bpki-ta"
            value = "${myrpki::bpki_servers_directory}/ca.cer">
      <doc>
        Where pubd should look for the BPKI trust anchor.  All BPKI
	certificate verification within pubd traces back to this
	trust anchor.  Don't change this unless you really know what
	you are doing.
      </doc>
    </option>

    <option name  = "pubd-cert"
            value = "${myrpki::bpki_servers_directory}/pubd.cer">
      <doc>
        Where pubd should look for its own BPKI EE certificate.  Don't
        change this unless you really know what you are doing.
      </doc>
    </option>

    <option name  = "pubd-key"
            value = "${myrpki::bpki_servers_directory}/pubd.key">
      <doc>
        Where pubd should look for the private key corresponding to its
        own BPKI EE certificate.  Don't change this unless you really know
        what you are doing.
      </doc>
    </option>

    <option name  = "pubd-crl"
            value = "${myrpki::bpki_servers_directory}/ca.crl">
      <doc>
        Where pubd should look for the CRL covering its own BPKI EE
        certificate.  Don't change this unless you really know what
        you are doing.
      </doc>
    </option>

    <option name  = "irbe-cert"
            value = "${myrpki::bpki_servers_directory}/irbe.cer">
      <doc>
        Where pubd should look for the back-end control client's BPKI EE
        certificate.  Don't change this unless you really know what you
        are doing.
      </doc>
    </option>

  </section>

  <section name = "rootd">

    <doc>
      You don't need to run rootd unless you're IANA, are certifying
      private address space, or are an RIR which refuses to accept IANA as
      the root of the public address hierarchy.
    </doc>

    <doc>
      Ok, if that wasn't enough to scare you off: rootd is a mess,
      needs to be rewritten, or, better, merged into rpkid, and
      requires far too many configuration parameters.
    </doc>

    <doc>
      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.
    </doc>
    
    <doc>
      Don't run rootd unless you're sure that you need to do so.
    </doc>

    <doc>
      Still think you need to run rootd?  OK, but remember, you have
      been warned....
    </doc>

    <doc>
      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 "`[rootd]`" section.
      Certificates and keys may be in either DER or PEM format.
    </doc>

    <option name  = "bpki-ta"
            value = "${myrpki::bpki_servers_directory}/ca.cer">
      <doc>
        Where rootd should look for the BPKI trust anchor.  All BPKI
	certificate verification within rootd traces back to this
	trust anchor.  Don't change this unless you really know what
	you are doing.
      </doc>
    </option>

    <option name  = "rootd-bpki-crl"
            value = "${myrpki::bpki_servers_directory}/ca.crl">
      <doc>
        BPKI CRL.  Don't change this unless you really know what you are
        doing.
      </doc>
    </option>

    <option name  = "rootd-bpki-cert"
            value = "${myrpki::bpki_servers_directory}/rootd.cer">
      <doc>
        rootd's own BPKI EE certificate.  Don't change this unless you
        really know what you are doing.
      </doc>
    </option>

    <option name  = "rootd-bpki-key"
            value = "${myrpki::bpki_servers_directory}/rootd.key">
      <doc>
        Private key corresponding to rootd's own BPKI EE certificate.
        Don't change this unless you really know what you are doing.
      </doc>
    </option>

    <option name  = "child-bpki-cert"
            value = "${myrpki::bpki_servers_directory}/child.cer">
      <doc>
        BPKI certificate for rootd's one and only up-down child (RPKI
	engine to which rootd issues an RPKI certificate).  Don't
	change this unless you really know what you are doing.
      </doc>
    </option>

    <option name  = "pubd-bpki-cert">
      <doc>
        BPKI certificate for pubd.  Don't set this unless you really
	know what you are doing.
      </doc>
    </option>

    <option name  = "server-host"
            value = "${myrpki::rootd_server_host}">
      <doc>
        Server host on which rootd should listen.
      </doc>
    </option>

    <option name  = "server-port"
            value = "${myrpki::rootd_server_port}">
      <doc>
        Server port on which rootd should listen.
      </doc>
    </option>

    <option name  = "rpki_data_dir"
            value = "${myrpki::bpki_servers_directory}">
      <doc>
        Directory where rootd should store its RPKI data files.  This
        is only used to construct other variables, rootd itself
        doesn't read it.
      </doc>
    </option>

    <option name  = "rpki_base_uri"
            value = "rsync://${myrpki::publication_rsync_server}/${myrpki::publication_rsync_module}/${myrpki::handle}-root/root">
      <doc>
        rsync URI corresponding to directory containing rootd's
        outputs.  This is only used to construct other variables,
        rootd itself doesn't read it.
      </doc>
    </option>

    <option name  = "rpki-root-cert-uri"
            value = "${rootd::rpki_base_uri}.cer">
      <doc>
        rsync URI for rootd's root (self-signed) RPKI certificate.
      </doc>
    </option>

    <option name  = "rpki-root-cert-file"
            value = "${rootd::rpki_data_dir}/root.cer">
      <doc>
        Filename of rootd's root RPKI certificate.
      </doc>
    </option>

    <option name  = "rpki-root-key-file"
            value = "${rootd::rpki_data_dir}/root.key">
      <doc>
        Private key corresponding to rootd's root RPKI certificate.
      </doc>
    </option>

    <option name  = "rpki-root-crl-uri"
            value = "${rootd::rpki_base_uri}/root.crl">
      <doc>
        URI of the CRL for rootd's root RPKI certificate.
      </doc>
    </option>

    <option name  = "rpki-root-crl-file"
            value = "${rootd::rpki_data_dir}/root.crl">
      <doc>
        Filename of the CRL for rootd's root RPKI certificate.
      </doc>
    </option>

    <option name  = "rpki-root-manifest-uri"
            value = "${rootd::rpki_base_uri}/root.mft">
      <doc>
        URI of the manifest for rootd's root RPKI certificate.
      </doc>
    </option>

    <option name  = "rpki-root-manifest-file"
            value = "${rootd::rpki_data_dir}/root.mft">
      <doc>
        Filename of the manifest for rootd's root RPKI certificate.
      </doc>
    </option>

    <option name  = "rpki-subject-pkcs10-file"
            value = "${rootd::rpki_data_dir}/subject.pkcs10">
      <doc>
        Where rootd should stash a copy of the PKCS #10 request it gets
        from its one (and only) child
      </doc>
    </option>

    <option name  = "rpki-subject-lifetime"
            value = "30d">
      <doc>
        Lifetime of the one and only RPKI certificate rootd issues.
      </doc>
    </option>

    <option name  = "rpki-class-name"
            value = "${myrpki::handle}">
      <doc>
        Up-down protocol class name for RPKI certificate rootd issues to its
        one (and only) child.
      </doc>
    </option>

    <option name  = "rpki-subject-cert-uri"
            value = "${rootd::rpki_base_uri}/${myrpki::handle}.cer">
      <doc>
        URI of the one (and only) RPKI certificate rootd issues.
      </doc>
    </option>

    <option name  = "rpki-subject-cert-file"
            value = "${rootd::rpki_data_dir}/${myrpki::handle}.cer">
      <doc>
        Filename of the one (and only) RPKI certificate rootd issues.
      </doc>
    </option>

    <option name  = "pubd-contact-uri"
	    value = "http://${myrpki::pubd_server_host}:${myrpki::pubd_server_port}/client/${myrpki::handle}-root">
      <doc>
	URI at which rootd should contact pubd for service.
      </doc>
    </option>

  </section>

  <section name = "web_portal">

    <doc>
      Glue to allow Django to pull user configuration from this file
      rather than requiring the user to edit settings.py.
    </doc>

    <!--
	We used to have SQL settings for the GUI here, but since
	they're pretty much required to be identical to the ones for
	irdbd at this point, the duplicate entries were just another
	chance to misconfigure something, so I removed them.  Not yet
	sure whether this was the right approach.  Too much historical
	baggage in this file.
      -->

    <option name  = "secret-key">
      <doc>
	Site-specific secret key for Django.
      </doc>
    </option>

    <option name  = "allowed-hosts">
      <doc>
	Name of 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, and will fail when it thinks it's running on a
	disallowed host.
      </doc>
      <doc>
	If you get an error like "Invalid HTTP_HOST header (you may
	need to set ALLOWED_HOSTS)", you will need to set this option.
      </doc>
    </option>

    <option name = "download-directory"
            value = "/var/tmp">
      <doc>
	A directory large enough to hold the RouteViews.org routing table dump
        fetched by the rpkigui-import-routes script.
      </doc>
    </option>

  </section>

  <section name = "autoconf">

    <doc>
      rpki-confgen --autoconf records the current autoconf settings
      here, so that other options can refer to them.  The section name
      "autoconf" is magic, don't change it.
    </doc>

    <option name = "bindir">
      <doc>
	Usually /usr/bin or /usr/local/bin.
      </doc>
    </option>
    
    <option name = "datarootdir">
      <doc>
	Usually /usr/share or /usr/local/share.
      </doc>
    </option>

    <option name = "sbindir">
      <doc>
	Usually /usr/sbin or /usr/local/sbin.
      </doc>
    </option>

    <option name = "sysconfdir">
      <doc>
	Usually /etc or /usr/local/etc.
      </doc>
    </option>

  </section>

</configuration>