aboutsummaryrefslogtreecommitdiff
path: root/myrpki.rototill/initialize.py
diff options
context:
space:
mode:
Diffstat (limited to 'myrpki.rototill/initialize.py')
-rw-r--r--myrpki.rototill/initialize.py154
1 files changed, 0 insertions, 154 deletions
diff --git a/myrpki.rototill/initialize.py b/myrpki.rototill/initialize.py
deleted file mode 100644
index 6e1b3ee9..00000000
--- a/myrpki.rototill/initialize.py
+++ /dev/null
@@ -1,154 +0,0 @@
-"""
-Step 1: User runs a new "initialize" script. This reads the .conf file
- and creates the resource-holding "self" BPKI identity (what
- we've been calling bpki.myrpki/ca.cer, although that name
- should change and the user shouldn't need to know it anymore).
- If the .conf file says that this user will be running any
- servers at all (rpkid, irdbd, pubd, rootd), this script also
- creates what we've been calling bpki.myirbe/ca.cer and issues
- bpki ee certificates for all the servers we will be running.
- It bundles up the "self" identity (bpki.myrpki/ca.cer and the
- "handle" value from the [myrpki] section of the .conf file) as
- an xml blob, which it writes out to some filename (call it
- me.xml for now).
-
- The general idea here is to start with all the setup that we
- can do based just on the .conf file without talking to anybody
- else.
-
- rootd is a special case, in this as in all else. when we're
- running rootd, the initalize script should probably just
- create everything needed for rootd and for rpkid to know about
- rootd as its parent. rootd is always operated by the same
- entity as the rpkid that uses this rootd as its parent, so
- this is a bit tedious but should be straightforward.
- similarly, i think it's ok for us to insist that the operator
- running rootd must also run its own pubd.
-
-$Id$
-
-Copyright (C) 2010 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.
-"""
-
-import subprocess, csv, re, os, getopt, sys, base64, time, myrpki, rpki.config
-
-from xml.etree.ElementTree import Element, SubElement, ElementTree
-
-os.environ["TZ"] = "UTC"
-time.tzset()
-
-cfg_file = "myrpki.conf"
-
-opts, argv = getopt.getopt(sys.argv[1:], "c:h?", ["config=", "help"])
-for o, a in opts:
- if o in ("-c", "--config"):
- cfg_file = a
- elif o in ("-h", "--help", "-?"):
- print __doc__
- sys.exit(0)
-if argv:
- print __doc__
- sys.exit(1)
-
-cfg = rpki.config.parser(cfg_file, "myrpki")
-
-handle = cfg.get("handle")
-run_rpkid = cfg.getboolean("run_rpkid")
-run_pubd = cfg.getboolean("run_pubd")
-run_rootd = cfg.getboolean("run_rootd")
-
-if run_rootd and (not run_pubd or not run_rpkid):
- raise RuntimeError, "Can't run rootd unless also running rpkid and pubd"
-
-myrpki.openssl = cfg.get("openssl", "openssl")
-
-# Create directories for parents, children, and repositories.
-# Directory names should become configurable (later).
-
-for i in ("parents", "children", "repositories"):
- if not os.path.exists(i):
- print "Creating %s/" % i
- os.makedirs(i)
- else:
- print "%s/ already exists" % i
-
-# First create the "myrpki" (resource holding) BPKI and trust anchor
-
-bpki_myrpki = myrpki.CA(cfg_file, cfg.get("myrpki_bpki_directory"))
-
-bpki_myrpki.setup(cfg.get("bpki_myrpki_ta_dn",
- "/CN=%s BPKI Resource Trust Anchor" % handle))
-
-# If we're running any daemons at all, we also need to set up the
-# "myirbe" (server-operating) BPKI, its trust anchor, and EE certs for
-# each program we need to run.
-
-if run_rpkid or run_pubd or run_rootd:
-
- bpki_myirbe = myrpki.CA(cfg_file, cfg.get("myirbe_bpki_directory"))
-
- bpki_myirbe.setup(cfg.get("bpki_myirbe_ta_dn",
- "/CN=%s BPKI Server Trust Anchor" % handle))
-
- if run_rpkid:
-
- bpki_myirbe.ee(cfg.get("bpki_rpkid_ee_dn",
- "/CN=%s rpkid server certificate" % handle), "rpkid")
-
- # rpkid implies irdbd
-
- bpki_myirbe.ee(cfg.get("bpki_irdbd_ee_dn",
- "/CN=%s irdbd server certificate" % handle), "irdbd")
-
- if run_pubd:
- bpki_myirbe.ee(cfg.get("bpki_pubd_ee_dn",
- "/CN=%s pubd server certificate" % handle), "pubd")
-
- if run_rpkid or run_pubd:
-
- # Client cert for myirbe and irbe_cli
-
- bpki_myirbe.ee(cfg.get("bpki_irbe_ee_dn",
- "/CN=%s irbe client certificate" % handle), "irbe")
-
- if run_rootd:
-
- bpki_myirbe.ee(cfg.get("bpki_rootd_ee_dn",
- "/CN=%s rootd server certificate" % handle), "rootd")
-
-# Build the me.xml file. Need to check for existing file so we don't
-# overwrite? Worry about that later.
-
-e = Element("me", xmlns = myrpki.namespace, version = "1", handle = handle)
-myrpki.PEMElement(e, "bpki_ca_certificate", bpki_myrpki.cer)
-myrpki.etree_write(e, handle + ".xml")
-
-# If we're running rootd, construct a fake parent to go with it.
-
-if run_rootd:
-
- e = Element("parent", xmlns = myrpki.namespace, version = "1",
- parent_handle = "rootd", child_handle = handle,
- service_url = "https://localhost:%s/" % cfg.get("rootd_server_port"))
-
- myrpki.PEMElement(e, "bpki_resource_ca", bpki_myirbe.cer)
- myrpki.PEMElement(e, "bpki_server_ca", bpki_myirbe.cer)
-
- SubElement(e, "repository", type = "offer",
- service_url = "https://%s:%d/" % (cfg.get("pubd_server_host"),
- cfg.get("pubd_server_port")))
- rootd_filename = "parents/rootd.xml"
- print "Writing", rootd_filename
- myrpki.etree_write(e, rootd_filename)