自己証明書を作成する
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での通信ができる。