« ^ »

Pythonのsslモジュールを使ってSSL/TLS通信する

所要時間: 約 1分

自己証明書を作成する

openssl req -x509 -newkey rsa:2048 -nodes -keyout private.key -out cert.pem -days 365

サーバを実装する

import ssl
from socket import *

context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain("./cert.pem", "./private.key")

soc = socket()
soc.bind(("localhost", 8181))

try:
    soc.listen(1)

    with context.wrap_socket(soc, server_side=True) as ssoc:
        while True:
            conn, addr = ssoc.accept()
            data = conn.recv(10)
            print(data)
            conn.close()
finally:
    soc.close()

クライアントを実装する

import ssl
from socket import *

context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain("./cert.pem", "./private.key")

soc = socket()
soc.bind(("localhost", 8181))

try:
    soc.listen(1)

    with context.wrap_socket(soc, server_side=True) as ssoc:
        while True:
            conn, addr = ssoc.accept()
            data = conn.recv(10)
            print(data)
            conn.close()
finally:
    soc.close()

ワーニングは出るけれど、SSL/TLSでの通信ができる。