From 11b24d0426fcb930e34dba3471852a40ca894484 Mon Sep 17 00:00:00 2001 From: afonso Date: Tue, 19 Mar 2024 23:02:05 +0000 Subject: [PATCH] [TP06] Finished --- TPs/TP06/CA/CA.key | 54 +++++++++++++++++++++++++++++++++ TPs/TP06/CA/CA.pem | 32 ++++++++++++++++++++ TPs/TP06/CA/CA.srl | 1 + TPs/TP06/README.md | 34 +++++++++++++++++++++ TPs/TP06/client.py | 51 +++++++++++++++++++++++++++++++ TPs/TP06/client/client.crt | 30 ++++++++++++++++++ TPs/TP06/client/client.csr | 28 +++++++++++++++++ TPs/TP06/client/client.key | 52 ++++++++++++++++++++++++++++++++ TPs/TP06/server.py | 62 ++++++++++++++++++++++++++++++++++++++ TPs/TP06/server/server.crt | 30 ++++++++++++++++++ TPs/TP06/server/server.csr | 28 +++++++++++++++++ TPs/TP06/server/server.key | 52 ++++++++++++++++++++++++++++++++ TPs/TP06/server/server.py | 37 +++++++++++++++++++++++ 13 files changed, 491 insertions(+) create mode 100644 TPs/TP06/CA/CA.key create mode 100644 TPs/TP06/CA/CA.pem create mode 100644 TPs/TP06/CA/CA.srl create mode 100644 TPs/TP06/README.md create mode 100644 TPs/TP06/client.py create mode 100644 TPs/TP06/client/client.crt create mode 100644 TPs/TP06/client/client.csr create mode 100644 TPs/TP06/client/client.key create mode 100644 TPs/TP06/server.py create mode 100644 TPs/TP06/server/server.crt create mode 100644 TPs/TP06/server/server.csr create mode 100644 TPs/TP06/server/server.key create mode 100644 TPs/TP06/server/server.py diff --git a/TPs/TP06/CA/CA.key b/TPs/TP06/CA/CA.key new file mode 100644 index 0000000..a4819ae --- /dev/null +++ b/TPs/TP06/CA/CA.key @@ -0,0 +1,54 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +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 +-----END ENCRYPTED PRIVATE KEY----- diff --git a/TPs/TP06/CA/CA.pem b/TPs/TP06/CA/CA.pem new file mode 100644 index 0000000..9bb576d --- /dev/null +++ b/TPs/TP06/CA/CA.pem @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFiTCCA3GgAwIBAgIUJ90aOSX5agNtyI7aCYIq0TPJGBswDQYJKoZIhvcNAQEL +BQAwVDELMAkGA1UEBhMCUFQxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM +GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDENMAsGA1UEAwwETVlDQTAeFw0yNDAz +MTkyMjE2MjlaFw0yOTAzMTgyMjE2MjlaMFQxCzAJBgNVBAYTAlBUMRMwEQYDVQQI +DApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQx +DTALBgNVBAMMBE1ZQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCr +rR+DEViRbq7Ilid50Osv8c3gvK0v++Hd22SaVmYKre8RkoUNcLthvDQ1KYz4US+I +Co5nUer+NWzmp1vAtxiqzjgJFFXsFNAIDAH9+gU8PHE3bb9Pw5lSstSq5T1VDSBS +4GwgSSs4cQeek7187F4+dtuROUJQv2H0oKLzNga171yXbS7lyHZKxypV5M6U2y2I +rYI1DWYJkp4d3Fjex4whIIVjZaCN/A7qbcgpnuiHtQ5mnH+ZBQd20mJbzhN32GQa +bstoV8PxmL9JpsTYkk2l4r+uQXCVQ4A89e3fLzHrezP7Vnx/ZWy9SrjeGDxgp1Pl +pdrOjqseucwM8c3cOvzQSaXcghGA7m9g2TM654MiXF4+7oam6sYMUGr/LThgvWqg +MIEYpIIO2W04iReMzM/aIZjHsJ7qQ/lCTUcQn0heQGUqJ1JB+hzwuARYDhcFKzTl +25d8Y/l7ttT0M0ecShRxUj2B13GxEddV1Q473xnUkR++YpWhztImVXk88bJ6IFoB +7NpFGOOhJsWrQ0WuDvgSrAr1TSkr/GkSDblYwiUhH62LNlGxwolSNkHgTNMBkyDh +5e0F3yAEwgX2co8FCFaBKm0F7ereNMfgFEtQ+G3X/id95oFlcL8lv/jn9kjddz2H +RmrWWWaaHQICopyXgUaS2yYDILbuuFyhNTqdZmLuSwIDAQABo1MwUTAdBgNVHQ4E +FgQUCTpJ8Aw9xFdF6Als2N98jfRnDFQwHwYDVR0jBBgwFoAUCTpJ8Aw9xFdF6Als +2N98jfRnDFQwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAAQTu +hMASxdllVLpjaRdD41907EkN0uufZkAliQnCZU4EXoPreH5NtsWPX6w5yvPp9bnG +mosSU9m7EHiXDCq0JWtCGCaSTjCfB+3haAn5TIog6yMA5RQbISigoEVY1ykg494Y +rjMMgS+CksK8nA6pjzZd2Hhxz2k2Bbz4MaIzkNHySv7p9CFvCT2nZn78O1cl2Vmk +U+ZoCvE5hnm3orWglAPXAsEstMly2ZrrwpwRIA3g44JnXEnM/McwvW5zotUjnUKT +naITcGsN963EF/byrxj3Cc/t12HN8Vh+xOaOYdC5VKQiWAyhyipuURGww6lPxatY +PvPD6NJNFPMEag3/Qp9kbcagzVEA/aVNOmqnZ2bcHsj9HokVh6E40yacRt9HnfY5 +YLGeMVEIC9klLm0MypyJgMg2ymJj8Lh68hIKwO8pTgMq8obsMgUiF6RU8T2D9+IC +EysD/UACQUM33lprDhoOgna+Pp6VfUJ/xq7vM8RoaV3yDs8DLA9dpeZ4P+9umjTK +tB15vM/e9I27bSk9QFi4PdRMuxWveRc1dgP6CmUK8/9PmiBgxEAAxLtpRQ6mMGD1 +pWqkVHv6wAgwgxLqfIEE1EgEv3brwLAQwU+Tc6o9emELF1zFp7tvefB+RO9H9fHI +0jMJG97rrgtFWcIs5xa0a4jTFJP75pCPBKSo4MA= +-----END CERTIFICATE----- diff --git a/TPs/TP06/CA/CA.srl b/TPs/TP06/CA/CA.srl new file mode 100644 index 0000000..48f77de --- /dev/null +++ b/TPs/TP06/CA/CA.srl @@ -0,0 +1 @@ +64996D2AE26B7AA89275BD8914DC14522E080C33 diff --git a/TPs/TP06/README.md b/TPs/TP06/README.md new file mode 100644 index 0000000..767bd7c --- /dev/null +++ b/TPs/TP06/README.md @@ -0,0 +1,34 @@ +# Generating keys + +1. Generate CA key and certificate: + +```bash +openssl genrsa -aes256 -out CA/CA.key 4096 +openssl req -x509 -new -nodes -key CA/CA.key -sha256 -days 1825 -out CA/CA.pem +``` + +2. Generate server key and CSR: + +```bash +openssl genrsa -out server/server.key 4096 +openssl req -new -key server/server.key -out server/server.csr +``` + +3. Sign the server CSR with CA: + +```bash +openssl x509 -req -in server/server.csr -CA CA/CA.pem -CAkey CA/CA.key -CAcreateserial -out server/server.crt -days 1825 -sha256 +``` + +4. Generate client key and CSR: + +```bash +openssl genrsa -out client/client.key 4096 +openssl req -new -key client/client.key -out client/client.csr +``` + +5. Sign the client CSR with ca CA: + +```bash +openssl x509 -req -in client/client.csr -CA CA/CA.pem -CAkey CA/CA.key -CAcreateserial -out client/client.crt -days 1825 -sha256 +``` diff --git a/TPs/TP06/client.py b/TPs/TP06/client.py new file mode 100644 index 0000000..467c142 --- /dev/null +++ b/TPs/TP06/client.py @@ -0,0 +1,51 @@ +from socket import create_connection +from ssl import CERT_REQUIRED +import ssl +import threading +import sys + +hostname = "example.org" +ip = "127.0.0.1" +port = 8443 + +client_cert = "client/client.crt" +server_cert = "server/server.crt" +client_key = "client/client.key" + +context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafile=server_cert) +context.load_cert_chain(certfile=client_cert, keyfile=client_key) + +# A biblioteca ssl não suporta editar as ciphers de TLS1.3 +# context.set_ciphers("TLS_CHACHA20_POLY1305_SHA256") +context.minimum_version = ssl.TLSVersion.TLSv1_3 +context.load_verify_locations(cafile="./CA/CA.pem") +context.verify_mode = CERT_REQUIRED + +def receive_messages(tls: ssl.SSLSocket): + try: + while True: + data = tls.recv(1024) + if not data: + break + print(f"\rServer: {data.decode()}\n> ", end="") + sys.stdout.flush() + except KeyboardInterrupt: + return + +with create_connection((ip, port)) as client: + with context.wrap_socket(client, server_side=False, server_hostname=hostname) as tls: + print(f"Using the following TLS1.3 cipher: ", str(tls.cipher())) + + threading.Thread(target=receive_messages, args=(tls,)).start() + + try: + while True: + message = input("> ") + print("\033[A \033[A") + print(f"Client: {message}\n", end="") + tls.sendall(message.encode()) + if message.lower() == "exit": + break + except KeyboardInterrupt: + tls.close() + pass diff --git a/TPs/TP06/client/client.crt b/TPs/TP06/client/client.crt new file mode 100644 index 0000000..e175315 --- /dev/null +++ b/TPs/TP06/client/client.crt @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFNzCCAx8CFGSZbSria3qoknW9iRTcFFIuCAwzMA0GCSqGSIb3DQEBCwUAMFQx +CzAJBgNVBAYTAlBUMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl +cm5ldCBXaWRnaXRzIFB0eSBMdGQxDTALBgNVBAMMBE1ZQ0EwHhcNMjQwMzE5MjIx +OTA2WhcNMjkwMzE4MjIxOTA2WjBcMQswCQYDVQQGEwJQVDETMBEGA1UECAwKU29t +ZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRUwEwYD +VQQDDAxleGFtcGxlMi5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQC3XOhVQUVK+J45o48k3wzbyaUAY5z08dL3BnCZJiv6y73JCllsJbpl+ztN4Iva +n+bQ5T4Rfr5fsAZWqptHNBnWwk18kn9IZuV62/EzPwHQ9QtXumqf1iwY5fsd/2KJ +d+zrMl9nzXJcbGELHIYwdopdynPPfhq5w/E1U76vPr2MNNMJ/rLbQavSuofZ13wR +TBsibCsNlai7PVX1j4UdyrUspWzVr64tBz2li/5YlHy1wri1KN3rpBCKEDbf8wQP +9FJwXNhE8v1nF5fd2Opvz+o8kh0Mn3JTYa0RCZ9marVVg3l7e8+KXRYgvnaQsvcg +/KeVmjOwU/kFlZh+zDJb2AaxijzqX5JnB0yZdkvc9y8/QpqtVD0SrP203bHuGcwW +UVd1WMGN1ACPNYB6Mx9Z9dNIWsIpRKA+Inal866bW5dl/BGUkXN8yr/Cc7io8AyP +OTqdiMUhCW1al2cDMRf+hGhlLSFpizbp4YIbQA1roJWewaed8+5eTqsolxx6jC2a +HTyv+ipsh3AUnnfVAtVy4qdmOFidBtlVIpLlsDD4QEv46yp9dUV4RnM9yz7BQS1/ +qZy5TMyeZmqX4+FQu7uAkKuZqvq0I8eQKtci/q6TLjSgkBnOd6XdjYxEu6aEtbm2 +rYJRZY0NV2fM9Zr6AYdPVZPnsWJZ5xbb380wVPpD1C4OKQIDAQABMA0GCSqGSIb3 +DQEBCwUAA4ICAQBlhBsrnLaZ82JmJXoIHEKFib8Q8BECr07/2bcqV1Vo34BXJbP1 +BAB9/2TuN11dGfA02I7Cd8i5kaq9C42y/5sY1lGRj7LTbhf8D9LZfOsMsDoblZaR +eGnKF2V5H6ciyajXa/nOFPT+ZC2dB1JBSg26w72LugAcKaoewY/1oq823lX3mMd9 +TPdPCwGhj/+j7QLQ21NLMBbwTt7koxTZSP4KFFirJHE26lT3Ckdc4DE0ZN1AbyU+ +hS39ao2yQXLoo5hBBubydHmuxPSO49Nzr/PQCl32rNahv2rC84X8AJAI/h11zsU0 +/hh+9dXywXc5aJGnsaModE9RNknU7dcsmzI8ZOF6FMILShMicj7rK1HiMx/KhLOm +np/DyCYczQ5Aa8hvfVbOtfJ5zaPnsAlkkvvtwblOIazV5/Lo9Rok2LKWEFR54qeX +GsoqW4BoP9bq7gpxsfUtNU1fET5oUpH2lP0Hz1f5yIcfiREthTTpR3JVCDUn3AWN +Z/VEXewhZJWjFLC0qvOzSAL/Jp/ZZhz/9tGvK2CHQGGVLlgTDPTRAUL0vvZ4WC4u +jJYy8+38Cc58EUuzfsMZ21iHTTHZwfQvqlLeSmTmF2l59hoDCtAbuu2BajqVSaR4 +EG7xzMczFAyNebtpYi9wkjy+9Tu3/vTxKpCGmHtaYJgFvXY6sqMHDIHaFg== +-----END CERTIFICATE----- diff --git a/TPs/TP06/client/client.csr b/TPs/TP06/client/client.csr new file mode 100644 index 0000000..ec79081 --- /dev/null +++ b/TPs/TP06/client/client.csr @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEtjCCAp4CAQAwXDELMAkGA1UEBhMCUFQxEzARBgNVBAgMClNvbWUtU3RhdGUx +ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEVMBMGA1UEAwwMZXhh +bXBsZTIub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAt1zoVUFF +SvieOaOPJN8M28mlAGOc9PHS9wZwmSYr+su9yQpZbCW6Zfs7TeCL2p/m0OU+EX6+ +X7AGVqqbRzQZ1sJNfJJ/SGbletvxMz8B0PULV7pqn9YsGOX7Hf9iiXfs6zJfZ81y +XGxhCxyGMHaKXcpzz34aucPxNVO+rz69jDTTCf6y20Gr0rqH2dd8EUwbImwrDZWo +uz1V9Y+FHcq1LKVs1a+uLQc9pYv+WJR8tcK4tSjd66QQihA23/MED/RScFzYRPL9 +ZxeX3djqb8/qPJIdDJ9yU2GtEQmfZmq1VYN5e3vPil0WIL52kLL3IPynlZozsFP5 +BZWYfswyW9gGsYo86l+SZwdMmXZL3PcvP0KarVQ9Eqz9tN2x7hnMFlFXdVjBjdQA +jzWAejMfWfXTSFrCKUSgPiJ2pfOum1uXZfwRlJFzfMq/wnO4qPAMjzk6nYjFIQlt +WpdnAzEX/oRoZS0haYs26eGCG0ANa6CVnsGnnfPuXk6rKJcceowtmh08r/oqbIdw +FJ531QLVcuKnZjhYnQbZVSKS5bAw+EBL+OsqfXVFeEZzPcs+wUEtf6mcuUzMnmZq +l+PhULu7gJCrmar6tCPHkCrXIv6uky40oJAZznel3Y2MRLumhLW5tq2CUWWNDVdn +zPWa+gGHT1WT57FiWecW29/NMFT6Q9QuDikCAwEAAaAVMBMGCSqGSIb3DQEJBzEG +DAQxMjM0MA0GCSqGSIb3DQEBCwUAA4ICAQCamKmpIto5HIRmHEQhRulAdwtHOpRs +Lmw/IVM9eflBaxgJuwOM2VEnAc58+y5IL08dE8IiDRxNOBKAf9gne2WL0WVRFmp3 +pHezwDMlhaU/FeDfh9v07HNHBJzKY8HSjvQ8yENDGFpK9zQyjKFgk6wiLyIqxQ7a +Ko5YtW/x4Lbwmgw0Tg8eWOH332sXmsCuoObl0x5xbwJ0KXJEwl+oazW2ncH9+RCG +PJMQRIDzrMyvixa3l295LtP2qJXnlTr9W6G6NSyZjCCBXW86RmSxdXZ3OeLuRVN6 +QoEaBatDbeAsIw5HoKg4fWqdZw9rLTON89zbSnVJLb+kI9xtsMJ7y2uKCz/INrlC +5vsAfILldjHZAieXPBRrEDGMO0gSq73QIh8pd+IWvBt2qRWb8ZZR9vUPDjj+4RDv +XLdQyoXBTLRXn0YQH76Topy/sttLf7sFdkrq5Oy96kdrrU9mN2RkC7kgpexdNfcl +0wXJ6gZtksaGOKc0yFVqSC/Bho6JfasQAiBlti1W3M+li92ACs1ltvH3266yEBYa +LtzWvXNUn48PJWrMj7s9OMDiMSoJGJG52NwBEp3qBOC74g/6XtuJkBrGXIpHBaod +gkDCpULrXqqkW4s+CI7WQCCymbvxSdIGIaA6/Ufy1Wyl0XLdm3o8MFF82BGQPPEh +nw7fTCepLq/jmQ== +-----END CERTIFICATE REQUEST----- diff --git a/TPs/TP06/client/client.key b/TPs/TP06/client/client.key new file mode 100644 index 0000000..eed41be --- /dev/null +++ b/TPs/TP06/client/client.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +UVGySovBgOxGQNsGLPLBSZSr9DL/GQ== +-----END PRIVATE KEY----- diff --git a/TPs/TP06/server.py b/TPs/TP06/server.py new file mode 100644 index 0000000..1910fd8 --- /dev/null +++ b/TPs/TP06/server.py @@ -0,0 +1,62 @@ +from socket import socket, AF_INET, SOCK_STREAM +from ssl import CERT_REQUIRED +import ssl +import sys +import threading + + +ip = "127.0.0.1" +port = 8443 + +client_cert = "client/client.crt" +server_cert = "server/server.crt" +server_key = "server/server.key" + +context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) + + +context.minimum_version = ssl.TLSVersion.TLSv1_3 +context.maximum_version = ssl.TLSVersion.TLSv1_3 + +# A biblioteca ssl não suporta editar as ciphers de TLS1.3 +# context.set_ciphers("TLS_CHACHA20_POLY1305_SHA256") + +context.load_cert_chain(certfile=server_cert, keyfile=server_key) +context.load_verify_locations(cafile="./CA/CA.pem") +context.verify_mode = CERT_REQUIRED + +def handle_client(connection: ssl.SSLSocket, address): + try: + print(f"Client Connected: {address}\n") + print(f"Using the following TLS1.3 cipher: ", str(connection.cipher())) + + while True: + message = connection.recv(1024) + if not message: + break + print(f"\rClient: {message.decode()}\n> ", end="") + sys.stdout.flush() + except KeyboardInterrupt: + connection.close() + return + +with socket(AF_INET, SOCK_STREAM) as server: + server.bind((ip, port)) + server.listen(5) + while True: + client_socket, client_address = server.accept() + ssl_socket = context.wrap_socket(client_socket, server_side=True) + threading.Thread(target=handle_client, args=(ssl_socket, client_address)).start() + + try: + while True: + server_message = input("> ") + print("\033[A \033[A") + print(f"Server: {server_message}\n", end="") + ssl_socket.sendall(server_message.encode()) + if server_message.lower() == "exit": + break + except KeyboardInterrupt: + ssl_socket.close() + client_socket.close() + pass diff --git a/TPs/TP06/server/server.crt b/TPs/TP06/server/server.crt new file mode 100644 index 0000000..c780f97 --- /dev/null +++ b/TPs/TP06/server/server.crt @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFNjCCAx4CFGSZbSria3qoknW9iRTcFFIuCAwyMA0GCSqGSIb3DQEBCwUAMFQx +CzAJBgNVBAYTAlBUMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl +cm5ldCBXaWRnaXRzIFB0eSBMdGQxDTALBgNVBAMMBE1ZQ0EwHhcNMjQwMzE5MjIx +NzM4WhcNMjkwMzE4MjIxNzM4WjBbMQswCQYDVQQGEwJQVDETMBEGA1UECAwKU29t +ZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRQwEgYD +VQQDDAtleGFtcGxlLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AM6H/Fi8AeocrnwRvJDDw6GW5yZIFG3tm59rBgCxOFgcmnox+1Hxtbk1JKsU5zu7 +Dp9/JBhfZ+AAAJDa9X8ArzhoegwiI84RYH4BrJrBGfer3Hw/ABlopawoLIwb62XC +P377Bz6QeoHE9ou3/X6otXZpFwx6d9G+JhyssroJ/UJWpjcCtl7GS22bWP4PPnXA +oHgogLD0gbOp/uAczUomsQGFlLCdr9OPJU7kwmlksBZEQ42GW+3X7M8CVTZ0WMGy +J2mYMOlHNEmjWKosK+QlAcN5NsbmWF2zE9Dn5oQNeuNvE0wrdioqnY6Nc1wgmX8t +Id3oKTPF1cRT8ngZzLdFCueIV16YtX8APY2SoxqvUn3m4QxFqSlVMqpDhZSmrIGB +KtJRCugdfQlfsBmdRO6Cfe/0/qv6AJhynE+Y2YqWJScLEPKcP0uAMPk90+oOh/hw +XefLnEk8yXDhbe6XkHWDZ1lhPRg5lBT+tEeTXx7s3N79Rki5Oa2F1DDN7WmKyOgz +kWDB0PuGB0ZPxRVH+aw4wzjBdXRmHx08WaMfp7mfZjIY3WHHLmXk0y/LAgBodocw +eZpP3H7JJi85Nv16xH3XocDU979PvKASoLJ5SDTuG2N+sUHi6bVvpEgcfQDLgGEh +speM07gC5GFa+yz3rGga9EAhfTB2z1mI7aJLMHZVlYtpAgMBAAEwDQYJKoZIhvcN +AQELBQADggIBAGXddzeOBri9vrp5e7vcNuBSzhPrxpKoubX4DY/861XlIqGwhWdm +DuOOafIy7GZesoERanIBIDgSnzT6trorBDxhM5iBBdDq0hHREAOsFThvqfXXZqJd +MUyspGN9pSFJw8wOyAeSx7K+FW8tyComYuZkrupmS0nlkRke3NAM/cQKAi3ezPRt +MJyCpDcvxLz8tLhKLL/PtYy0VBqHEr6Bn4PDtXUv0p00JOHK/Ki0gAAs1YS+7kPA +cQuiuN7fWBBEauBoydnV+CgvQHTM/8UU+kBeVJWkPwYMXg/JVZc7vqNhb0r+fUjz +qwfkwa6N9ZXroE3iaHoyfumQ6XO9Rf6TU1zixrQt+YxhEcdepCw8T5GStpNTUXRH +1DKXHvqS1NfNgTqD2dFWclcdjommgORS6PphnsaWG/4ifc+pZtEyfLxT/GsJJpCu +jYCEudp/Y/UplKxb+nKWQulakj1m4RZMsrn/C145FSjDjyfMnrUrKkvI2j4M6Tt0 +EM8k30yVRunDmgC+gAI8nBxli6U7b9eezaQlI/5E8R32YRhSGoLqC89ZhIB9MlOh ++Z+5URiHPvcwt0RXwiQ49Tr412kMvtCUvpgI6Ukx11adzByvou9Yp/Hin6bmOaeR +yrtJvq6hdjifL4h+a4dFfOHgM9MmHiHNzFoKOukYHscpx4STNaMDqRqI +-----END CERTIFICATE----- diff --git a/TPs/TP06/server/server.csr b/TPs/TP06/server/server.csr new file mode 100644 index 0000000..440f1d9 --- /dev/null +++ b/TPs/TP06/server/server.csr @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEtTCCAp0CAQAwWzELMAkGA1UEBhMCUFQxEzARBgNVBAgMClNvbWUtU3RhdGUx +ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEUMBIGA1UEAwwLZXhh +bXBsZS5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDOh/xYvAHq +HK58EbyQw8OhlucmSBRt7ZufawYAsThYHJp6MftR8bW5NSSrFOc7uw6ffyQYX2fg +AACQ2vV/AK84aHoMIiPOEWB+AayawRn3q9x8PwAZaKWsKCyMG+tlwj9++wc+kHqB +xPaLt/1+qLV2aRcMenfRviYcrLK6Cf1CVqY3ArZexkttm1j+Dz51wKB4KICw9IGz +qf7gHM1KJrEBhZSwna/TjyVO5MJpZLAWREONhlvt1+zPAlU2dFjBsidpmDDpRzRJ +o1iqLCvkJQHDeTbG5lhdsxPQ5+aEDXrjbxNMK3YqKp2OjXNcIJl/LSHd6CkzxdXE +U/J4Gcy3RQrniFdemLV/AD2NkqMar1J95uEMRakpVTKqQ4WUpqyBgSrSUQroHX0J +X7AZnUTugn3v9P6r+gCYcpxPmNmKliUnCxDynD9LgDD5PdPqDof4cF3ny5xJPMlw +4W3ul5B1g2dZYT0YOZQU/rRHk18e7Nze/UZIuTmthdQwze1pisjoM5FgwdD7hgdG +T8UVR/msOMM4wXV0Zh8dPFmjH6e5n2YyGN1hxy5l5NMvywIAaHaHMHmaT9x+ySYv +OTb9esR916HA1Pe/T7ygEqCyeUg07htjfrFB4um1b6RIHH0Ay4BhIbKXjNO4AuRh +Wvss96xoGvRAIX0wds9ZiO2iSzB2VZWLaQIDAQABoBUwEwYJKoZIhvcNAQkHMQYM +BDEyMzQwDQYJKoZIhvcNAQELBQADggIBAAooNMiAJVpxbjO0WNJtw9ufvXHY4Nm0 +yuvIApJ+A7vpk/sNGn/YqQ5mDdxI+6CO9X8q6eXiYaUHuq3cAX8cq4EpTwk2ZTxe +CdgDNmeZyXrYCfsUGkl2+5DEe13Z051/BtGL+15phcdpCJK/H+o8gk+Kp7mEMbyL +jWXOFmo0PmG6PcJRiSBu3Xi9ZrLZWZ2eEZ0NRDcTtOdywBKBbZVcFg1aSpy5XMLQ +X8cJgJXI5P6fAQWFrkDnwp7IUqcSChDhhPqHvsW4OZqKwzs0gem5yPvt8W6hnTf4 +NUJYSD/9MRUY+o1vepzs7plffUFX6KwhfFxXsGMU/z5tkWog2TYKecfL0vLiZnvk +XOxIsdsZTEG6HfAhWrslz0Aww4w71nU51GyX3Nufqg5nFio9LMRLCruU47lUPest +V30LdmvbH85ZQXICMgMUPuTlOJ0IVIPLdMxWsPkYYqhrzee4f4PMxyWeNO5/07q2 +mHq/WTv6EhRuj62W8UM9zvW4et+S1AzYO9ni00FnbNgIDukGAPgP/e3IT8sFwPp+ +WXCDTQcCMhNGYT/xI7/psURdnSsA4HbnXBB1nmiNCx1FWSoSbkqmBE7pLF6EQsbe +6/DUAAoeywx7aIp/fE8Rn/ds4zN0SpPnU/hztZmFy/0F+t6la1UvZl3iAm2O2zD6 +j9Xx8GzQvQ3S +-----END CERTIFICATE REQUEST----- diff --git a/TPs/TP06/server/server.key b/TPs/TP06/server/server.key new file mode 100644 index 0000000..f67926c --- /dev/null +++ b/TPs/TP06/server/server.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +FymzYz4Gv0oJMuk7jQjEQcyszeERzORj +-----END PRIVATE KEY----- diff --git a/TPs/TP06/server/server.py b/TPs/TP06/server/server.py new file mode 100644 index 0000000..568236f --- /dev/null +++ b/TPs/TP06/server/server.py @@ -0,0 +1,37 @@ +from socket import socket, AF_INET, SOCK_STREAM +from ssl import SSLContext, PROTOCOL_TLS_SERVER, CERT_REQUIRED +import ssl + + +ip = "127.0.0.1" +port = 8443 + +client_cert = "client.crt" +server_cert = "server.crt" +server_key = "server.key" + +context = SSLContext(PROTOCOL_TLS_SERVER) +context.set_ciphers("TLS_CHACHA20_POLY1305_SHA256") +print("Using Cipher: ", context.get_ciphers()) +context.minimum_version = ssl.TLSVersion.TLSv1_3 +print("Minimum TLS Version: ", context.minimum_version) +context.load_cert_chain("server_cert.pem", "server_key.pem") +context.verify_mode = CERT_REQUIRED + +with socket(AF_INET, SOCK_STREAM) as server: + server.bind((ip, port)) + server.listen(1) + with context.wrap_socket(server, server_side=True) as tls: + connection, address = tls.accept() + print(f"Connected by {address}\n") + data = connection.recv(1024) + print(f"Client Says: {data.decode()}") + + while True: + message = input("Server: ") + connection.sendall(message.encode()) + if message.lower() == "exit": + break + + data = connection.recv(1024) + print(f"Client says: {data.decode()}")