From 9658d8cc832febd0f697fc3967d886a4f04bf2aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauri=20V=C3=B5sandi?= Date: Sat, 22 Apr 2017 22:48:29 +0300 Subject: [PATCH] Fixes, add some screenshots --- README.rst | 20 +++--- certidude/authority.py | 57 ++++++------------ .../templates/mail/certificate-renewed.md | 10 +-- .../templates/mail/certificate-revoked.md | 2 +- .../templates/mail/certificate-signed.md | 17 +++--- certidude/templates/mail/token.md | 2 +- doc/certidude.png | Bin 0 -> 62914 bytes 7 files changed, 48 insertions(+), 60 deletions(-) create mode 100644 doc/certidude.png diff --git a/README.rst b/README.rst index 0cfd4a6..d77169d 100644 --- a/README.rst +++ b/README.rst @@ -12,15 +12,14 @@ Introduction ------------ Certidude is a novel X.509 Certificate Authority management tool -with privilege isolation mechanism and Kerberos authentication aiming to -eventually support PKCS#11 and in far future WebCrypto. - -.. figure:: doc/usecase-diagram.png - -Certidude is mainly designed for StrongSwan and OpenVPN gateway operators to make +with privilege isolation mechanism and Kerberos authentication +mainly designed for OpenVPN gateway operators to make VPN client setup on laptops, desktops and mobile devices as painless as possible. -Certidude can also be used to manage HTTPS client certificates for -eg. maintaining an extra layer of protection for intranet websites. + +.. figure:: doc/certidude.png + +Certidude can also be used to manage IPSec certifcates (StrongSwan) +or HTTPS client certificates to limit access to eg. intranet websites. For a full-blown CA you might want to take a look at `EJBCA `_ or `OpenCA `_. @@ -29,6 +28,8 @@ For a full-blown CA you might want to take a look at Usecases -------- +.. figure:: doc/usecase-diagram.png + Following usecases are covered: * I am a sysadmin. Employees with different operating systems need to access @@ -79,6 +80,7 @@ Common: Virtual private networking: +* Send OpenVPN profile URL tokens via e-mail, for simplified VPN adoption on Android, iOS, Windows, Mac OS X and Ubuntu. * OpenVPN integration, check out ``certidude setup openvpn server`` and ``certidude setup openvpn client``. * strongSwan integration, check out ``certidude setup strongswan server`` and ``certidude setup strongswan client``. * NetworkManager integration, check out ``certidude setup openvpn networkmanager`` and ``certidude setup strongswan networkmanager``. @@ -95,7 +97,7 @@ TODO * `OCSP `_ support, needs a bit hacking since OpenSSL wrappers are not exposing the functionality. * `SCEP `_ support, a client implementation available `here `_. Not sure if we can implement server-side events within current standard. * WebCrypto support, meanwhile check out `hwcrypto.js `_. -* Ability to send OpenVPN profile URL tokens via e-mail, for simplified VPN adoption. +* Use `pki.js `_ for generating keypair in the browser when claiming a token. * Signer process logging. diff --git a/certidude/authority.py b/certidude/authority.py index d7b016b..d1a5500 100644 --- a/certidude/authority.py +++ b/certidude/authority.py @@ -120,7 +120,7 @@ def revoke(common_name): attach_cert = buf, "application/x-pem-file", common_name + ".crt" mailer.send("certificate-revoked.md", attachments=(attach_cert,), - serial_number="%x" % cert.serial, + serial_hex="%x" % cert.serial, common_name=common_name) return revoked_path @@ -298,11 +298,15 @@ def _sign(csr, buf, overwrite=False): from xattr import getxattr, listxattr, setxattr common_name, = csr.subject.get_attributes_for_oid(NameOID.COMMON_NAME) - cert_path = os.path.join(config.SIGNED_DIR, common_name.value + ".pem") + cert_path = os.path.join(config.SIGNED_DIR, "%s.pem" % common_name.value) renew = False - signed_path = os.path.join(config.SIGNED_DIR, "%s.pem" % common_name.value) + attachments = [ + (buf, "application/x-pem-file", common_name.value + ".csr"), + ] + revoked_path = None + overwritten = False # Move existing certificate if necessary if os.path.exists(cert_path): @@ -313,12 +317,12 @@ def _sign(csr, buf, overwrite=False): renew = prev.public_key().public_numbers() == csr.public_key().public_numbers() if overwrite: - if renew: - # TODO: is this the best approach? - revoked_path = os.path.join(config.REVOKED_DIR, "%x.pem" % prev.serial) - os.rename(signed_path, revoked_path) - else: - revoked_path = revoke(common_name.value) + # TODO: is this the best approach? + prev_serial_hex = "%x" % prev.serial + revoked_path = os.path.join(config.REVOKED_DIR, "%s.pem" % prev_serial_hex) + os.rename(cert_path, revoked_path) + attachments += [(prev_buf, "application/x-pem-file", "deprecated.crt" if renew else "overwritten.crt")] + overwritten = True else: raise EnvironmentError("Will not overwrite existing certificate") @@ -328,42 +332,21 @@ def _sign(csr, buf, overwrite=False): with open(cert_path + ".part", "wb") as fh: fh.write(cert_buf) os.rename(cert_path + ".part", cert_path) + attachments.append((cert_buf, "application/x-pem-file", common_name.value + ".crt")) + cert_serial_hex = "%x" % cert.serial # Copy filesystem attributes to newly signed certificate if revoked_path: for key in listxattr(revoked_path): if not key.startswith("user."): continue - setxattr(signed_path, key, getxattr(revoked_path, key)) + setxattr(cert_path, key, getxattr(revoked_path, key)) # Send mail - recipient = None - - if renew: - mailer.send( - "certificate-renewed.md", - to=recipient, - attachments=( - (prev_buf, "application/x-pem-file", "deprecated.crt"), - (cert_buf, "application/x-pem-file", common_name.value + ".crt") - ), - serial_number="%x" % cert.serial, - common_name=common_name.value, - certificate=cert, - ) - else: - mailer.send( - "certificate-signed.md", - to=recipient, - attachments=( - (buf, "application/x-pem-file", common_name.value + ".csr"), - (cert_buf, "application/x-pem-file", common_name.value + ".crt") - ), - serial_number="%x" % cert.serial, - common_name=common_name.value, - certificate=cert, - ) - + if renew: # Same keypair + mailer.send("certificate-renewed.md", **locals()) + else: # New keypair + mailer.send("certificate-signed.md", **locals()) if config.LONG_POLL_PUBLISH: url = config.LONG_POLL_PUBLISH % hashlib.sha256(buf).hexdigest() diff --git a/certidude/templates/mail/certificate-renewed.md b/certidude/templates/mail/certificate-renewed.md index 7ae1b68..817379d 100644 --- a/certidude/templates/mail/certificate-renewed.md +++ b/certidude/templates/mail/certificate-renewed.md @@ -1,9 +1,9 @@ -Renewed {{ common_name }} ({{ serial_number }}) +Renewed {{ common_name.value }} ({{ cert_serial_hex }}) -This is simply to notify that certificate for {{ common_name }} -was renewed and the serial number of the new certificate is {{ serial_number }}. +This is simply to notify that certificate for {{ common_name.value }} +was renewed and the serial number of the new certificate is {{ cert_serial_hex }}. -The new certificate is valid from {{ certificate.not_valid_before }} until -{{ certificate.not_valid_after }}. +The new certificate is valid from {{ cert.not_valid_before }} until +{{ cert.not_valid_after }}. Services making use of those certificates should continue working as expected. diff --git a/certidude/templates/mail/certificate-revoked.md b/certidude/templates/mail/certificate-revoked.md index a56a371..fad903e 100644 --- a/certidude/templates/mail/certificate-revoked.md +++ b/certidude/templates/mail/certificate-revoked.md @@ -1,4 +1,4 @@ -Revoked {{ common_name }} ({{ serial_number }}) +Revoked {{ common_name }} ({{ serial_hex }}) This is simply to notify that certificate {{ common_name }} was revoked. diff --git a/certidude/templates/mail/certificate-signed.md b/certidude/templates/mail/certificate-signed.md index e0ae396..e2abdab 100644 --- a/certidude/templates/mail/certificate-signed.md +++ b/certidude/templates/mail/certificate-signed.md @@ -1,11 +1,14 @@ -Signed {{ common_name }} ({{ serial_number }}) +Signed {{ common_name.value }} ({{ cert_serial_hex }}) -This is simply to notify that certificate {{ common_name }} -with serial number {{ serial_number }} +This is simply to notify that certificate {{ common_name.value }} +with serial number {{ cert_serial_hex }} was signed{% if signer %} by {{ signer }}{% endif %}. -The certificate is valid from {{ certificate.not_valid_before }} until -{{ certificate.not_valid_after }}. +The certificate is valid from {{ cert.not_valid_before }} until +{{ cert.not_valid_after }}. -Any existing certificates with the same common name were rejected by doing so -and services making use of those certificates might become unavailable. +{% if overwritten %} +By doing so existing certificate with the same common name +and serial number {{ prev_serial_hex }} was rejected +and services making use of that certificate might become unavailable. +{% endif %} diff --git a/certidude/templates/mail/token.md b/certidude/templates/mail/token.md index fcf7c15..56a4be1 100644 --- a/certidude/templates/mail/token.md +++ b/certidude/templates/mail/token.md @@ -1,4 +1,4 @@ -Token for setting up VPN +Token for {{ user.name }} {{ issuer }} has provided {{ user }} a token for retrieving profile from the link below. diff --git a/doc/certidude.png b/doc/certidude.png new file mode 100644 index 0000000000000000000000000000000000000000..29487359793ef616a5cdcf0b038b2683bba98a00 GIT binary patch literal 62914 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 _p50=E}v#Y)>v#dSiHgPo+$dPmE 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 literal 0 HcmV?d00001