From 8070b78e3d22993872bbe3766cb0f073ebea1254 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Fri, 23 Jan 2015 04:57:47 +0100 Subject: [PATCH 1/3] talk to servers on non-standard https port (like -s acme.example.org:8443) note: I removed Network.server attribute, it was not used (only .server_url is used). I also removed the sanity-check for the ACME server (so one can use server:port syntax, which was considered invalid). I don't think this sanity-check is needed, because in the end, we can't fully check if it is correct anyway (you can always give valid, but non-working server names or ports). Also, many people will use the default ACME server, which is builtin and correct. --- letsencrypt/client/client.py | 1 - letsencrypt/client/network.py | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/letsencrypt/client/client.py b/letsencrypt/client/client.py index dd4e23c6e..0100f4f4a 100644 --- a/letsencrypt/client/client.py +++ b/letsencrypt/client/client.py @@ -59,7 +59,6 @@ class Client(object): :type dv_auth: :class:`letsencrypt.client.interfaces.IAuthenticator` """ - sanity_check_names([server]) self.network = network.Network(server) self.authkey = authkey diff --git a/letsencrypt/client/network.py b/letsencrypt/client/network.py index 135349c41..82c98c363 100644 --- a/letsencrypt/client/network.py +++ b/letsencrypt/client/network.py @@ -17,13 +17,12 @@ logging.getLogger("requests").setLevel(logging.WARNING) class Network(object): """Class for communicating with ACME servers. - :ivar str server: Certificate authority server + :ivar str server: Certificate authority server (server[:port]) :ivar str server_url: Full URL of the CSR server """ def __init__(self, server): - self.server = server - self.server_url = "https://%s/acme/" % self.server + self.server_url = "https://%s/acme/" % server def send(self, msg): """Send ACME message to server. From 93b247c4838f02c94596aceea16267ca7936bce7 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Fri, 23 Jan 2015 13:56:57 +0100 Subject: [PATCH 2/3] misc. improvements to ACME servername:port code changed ACME_SERVER to include the port. this is so the commandline options help will also display the port and also to make it clear at the constant definition that giving a port is supported there. improved docstrings --- letsencrypt/client/CONFIG.py | 4 ++-- letsencrypt/client/network.py | 8 ++++++-- letsencrypt/scripts/main.py | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/letsencrypt/client/CONFIG.py b/letsencrypt/client/CONFIG.py index 7d0b581fb..e65277221 100644 --- a/letsencrypt/client/CONFIG.py +++ b/letsencrypt/client/CONFIG.py @@ -2,8 +2,8 @@ import os.path -ACME_SERVER = "letsencrypt-demo.org" -"""CA hostname. +ACME_SERVER = "letsencrypt-demo.org:443" +"""CA hostname (and optionally :port). If you create your own server... change this line diff --git a/letsencrypt/client/network.py b/letsencrypt/client/network.py index 82c98c363..2ec93136d 100644 --- a/letsencrypt/client/network.py +++ b/letsencrypt/client/network.py @@ -17,11 +17,15 @@ logging.getLogger("requests").setLevel(logging.WARNING) class Network(object): """Class for communicating with ACME servers. - :ivar str server: Certificate authority server (server[:port]) - :ivar str server_url: Full URL of the CSR server + :ivar str server_url: Full URL of the ACME service """ def __init__(self, server): + """Initialize Network instance. + + :param str server: ACME (CA) server[:port] + + """ self.server_url = "https://%s/acme/" % server def send(self, msg): diff --git a/letsencrypt/scripts/main.py b/letsencrypt/scripts/main.py index ff3c3c792..c308b55da 100755 --- a/letsencrypt/scripts/main.py +++ b/letsencrypt/scripts/main.py @@ -30,7 +30,7 @@ def main(): parser.add_argument("-d", "--domains", dest="domains", metavar="DOMAIN", nargs="+") parser.add_argument("-s", "--server", dest="server", - help="The ACME CA server address.") + help="The ACME CA server [%s]." % CONFIG.ACME_SERVER) parser.add_argument("-p", "--privkey", dest="privkey", type=read_file, help="Path to the private key file for certificate " "generation.") From b72897677eb7e8d8a9cd11bed405b5720bf19403 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Fri, 23 Jan 2015 23:20:18 +0100 Subject: [PATCH 3/3] use default value for -s argument --- letsencrypt/scripts/main.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/letsencrypt/scripts/main.py b/letsencrypt/scripts/main.py index c308b55da..9a83b6fcb 100755 --- a/letsencrypt/scripts/main.py +++ b/letsencrypt/scripts/main.py @@ -30,7 +30,8 @@ def main(): parser.add_argument("-d", "--domains", dest="domains", metavar="DOMAIN", nargs="+") parser.add_argument("-s", "--server", dest="server", - help="The ACME CA server [%s]." % CONFIG.ACME_SERVER) + default=CONFIG.ACME_SERVER, + help="The ACME CA server. [%(default)s]") parser.add_argument("-p", "--privkey", dest="privkey", type=read_file, help="Path to the private key file for certificate " "generation.") @@ -72,10 +73,9 @@ def main(): zope.component.provideUtility(displayer) installer = determine_installer() - server = CONFIG.ACME_SERVER if args.server is None else args.server if args.revoke: - revoc = revoker.Revoker(server, installer) + revoc = revoker.Revoker(args.server, installer) revoc.list_certs_keys() sys.exit() @@ -104,7 +104,7 @@ def main(): else: privkey = client.Client.Key(args.privkey[0], args.privkey[1]) - acme = client.Client(server, privkey, auth, installer) + acme = client.Client(args.server, privkey, auth, installer) # Validate the key and csr client.validate_key_csr(privkey)