summaryrefslogtreecommitdiff
path: root/sshca/sshcaserver
blob: 1031221dfa51d6de658c5db0972e2f6beb867356 (plain)
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
#!/usr/bin/env python3
# RPC server for automatically signing SSH host (and user) certificates.
# Companion to rpc_pkisignd which handles X.509 certificates.
import argparse
import n.dns
import os
from n.xdr.server import run as run_server

from lib import SSHCA_PORT, SSHCA_SERVICE
from lib.service import SshCaService, SshCaInterface

parser = argparse.ArgumentParser()
# Service options
parser.add_argument("-d", "--directory",
                        metavar="PATH",
                        help="path to sshsignd data directory")
# Host options
parser.add_argument("-p", "--listen-port",
                        metavar="PORT",
                        type=int,
                        default=SSHCA_PORT,
                        help="HTTPS listening port")
parser.add_argument("-g", "--gss-service",
                        metavar="NAME",
                        default=SSHCA_SERVICE,
                        help="GSSAPI service name")
parser.add_argument("-t", "--gss-keytab",
                        metavar="PATH",
                        help="path to GSSAPI keytab")
args = parser.parse_args()

data_dir = args.directory or "/etc/private/sshsignd"

svc = SshCaService(host_ca_path=os.path.join(data_dir, "host_ca"),
                   user_ca_path=os.path.join(data_dir, "user_ca"),
                   host_domains=n.dns.DOMAINS)

n.xdr.server.run(SshCaInterface, (svc,),
                 port=args.listen_port,
                 gss_service=args.gss_service,
                 gss_keytab=args.gss_keytab)