From 1cb092dd738eade083832813f522b152740e2bc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tarjei=20Hus=C3=B8y?= Date: Sat, 4 Jun 2016 00:03:04 -0700 Subject: [PATCH] Hard-code cert in script Makes it easier to copy over just the script instead of having to clone the repo. Standalone is nice. --- postgres_mitm.py | 36 ++++++++++++++++++++++++++++++++---- server.cert | 9 --------- server.key | 8 -------- 3 files changed, 32 insertions(+), 21 deletions(-) delete mode 100644 server.cert delete mode 100644 server.key diff --git a/postgres_mitm.py b/postgres_mitm.py index 3092d2c..a7ee06d 100644 --- a/postgres_mitm.py +++ b/postgres_mitm.py @@ -22,10 +22,13 @@ from __future__ import print_function import argparse import hashlib import logging +import os import select import socket import ssl import struct +import tempfile +import textwrap import threading import time from collections import namedtuple @@ -55,6 +58,26 @@ AUTH_METHODS = { AUTH_METHODS_REVERSE = {val: key for key, val in AUTH_METHODS.items()} +CERTIFICATE = textwrap.dedent('''\ + -----BEGIN CERTIFICATE----- + MIIBFTCBvQIJAOVlsttuSJP1MAoGCCqGSM49BAMCMBUxEzARBgNVBAMMCnNlbGZz + aWduZWQwHhcNMTYwNTI5MTg0NDAzWhcNMjYwNTI3MTg0NDAzWjAVMRMwEQYDVQQD + DApzZWxmc2lnbmVkMFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAER28qhX8p79zv7x0G + Mkqef7KfDXgmobUfcUKhmt5Eqn+8GnraVjvrzAs+6jMcLemUj1+dLbkmFKMtFolA + f0EDbjAKBggqhkjOPQQDAgNHADBEAiAD1hIlVDGKtKkRyCZISZ/UteZ1hBzaX00Q + g6qnOtZlcgIgCWlME+pNLmaSeMVx7unb6zFGNhDzfxeSSJEM5tlCGZs= + -----END CERTIFICATE----- + + -----BEGIN EC PARAMETERS----- + BgUrgQQACg== + -----END EC PARAMETERS----- + -----BEGIN EC PRIVATE KEY----- + MHMCAQEEHyXy23774hq9CTorIFwGuppBUlXIZN0eOsjruDkJopigBwYFK4EEAAqh + RANCAARHbyqFfynv3O/vHQYySp5/sp8NeCahtR9xQqGa3kSqf7waetpWO+vMCz7q + Mxwt6ZSPX50tuSYUoy0WiUB/QQNu + -----END EC PRIVATE KEY----- + ''') + def main(): args = get_args() @@ -77,9 +100,13 @@ def main(): last_check_for_stopped_threads = time.time() try: + cert_file = tempfile.NamedTemporaryFile(delete=False) + with cert_file: + cert_file.write(CERTIFICATE) while True: client_socket, address = sock.accept() - client_handler = ClientConnection(client_socket, target_backend) + client_handler = ClientConnection(client_socket, target_backend, + cert_file.name) client_handler.start() threads.add(client_handler) @@ -87,10 +114,11 @@ def main(): remove_stopped_threads(threads) except (KeyboardInterrupt, SystemExit): - _logger.info('Received exit, shutting down sockets') + _logger.info('Received exit, shutting down') sock.shutdown(socket.SHUT_RDWR) sock.close() stop_threads(threads) + os.remove(cert_file.name) def get_args(): @@ -122,14 +150,14 @@ def stop_threads(threads): class ClientConnection(threading.Thread): - def __init__(self, client_socket, target_backend): + def __init__(self, client_socket, target_backend, cert_file): super(ClientConnection, self).__init__() for proto in ('PROTOCOL_TLSv1_2', 'PROTOCOL_TLSv1', 'PROTOCOL_SSLv23'): protocol = getattr(ssl, proto, None) if protocol: break self.ssl_context = ssl.SSLContext(protocol) - self.ssl_context.load_cert_chain(certfile='server.cert', keyfile='server.key') + self.ssl_context.load_cert_chain(certfile=cert_file) self.socket = client_socket self.target_backend = target_backend self.server_socket = None diff --git a/server.cert b/server.cert deleted file mode 100644 index 63ddba5..0000000 --- a/server.cert +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIBFTCBvQIJAOVlsttuSJP1MAoGCCqGSM49BAMCMBUxEzARBgNVBAMMCnNlbGZz -aWduZWQwHhcNMTYwNTI5MTg0NDAzWhcNMjYwNTI3MTg0NDAzWjAVMRMwEQYDVQQD -DApzZWxmc2lnbmVkMFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAER28qhX8p79zv7x0G -Mkqef7KfDXgmobUfcUKhmt5Eqn+8GnraVjvrzAs+6jMcLemUj1+dLbkmFKMtFolA -f0EDbjAKBggqhkjOPQQDAgNHADBEAiAD1hIlVDGKtKkRyCZISZ/UteZ1hBzaX00Q -g6qnOtZlcgIgCWlME+pNLmaSeMVx7unb6zFGNhDzfxeSSJEM5tlCGZs= ------END CERTIFICATE----- - diff --git a/server.key b/server.key deleted file mode 100644 index 61bac07..0000000 --- a/server.key +++ /dev/null @@ -1,8 +0,0 @@ ------BEGIN EC PARAMETERS----- -BgUrgQQACg== ------END EC PARAMETERS----- ------BEGIN EC PRIVATE KEY----- -MHMCAQEEHyXy23774hq9CTorIFwGuppBUlXIZN0eOsjruDkJopigBwYFK4EEAAqh -RANCAARHbyqFfynv3O/vHQYySp5/sp8NeCahtR9xQqGa3kSqf7waetpWO+vMCz7q -Mxwt6ZSPX50tuSYUoy0WiUB/QQNu ------END EC PRIVATE KEY-----