自己署名SSL証明書
自己署名SSL証明書を動的に作成するためのPythonコード。
gRPCを使用して中央管理サーバーからサーバーに接続できるように、動的に生成された多数のサーバー(ASG)を登録する必要があるときに、このコードを最初に収集して作成しました。これは素晴らしいプロトコルですが、自己署名証明書を使用する場合、サーバーの証明書がホスト名と一致する必要がありました。
したがって、以下のコードはすべてのノードのPython gRPCサーバーコードに組み込まれ、ASGの各サーバーは、プロセスが開始されるたびに新しい自己署名SSL証明書を作成し、各サーバーはその存在と公開鍵をに登録します。一時的なZookeeperznode。これは、そのASGで多数のサーバーを管理する簡単な方法でした。
お役に立てば幸いです。
import socket
from OpenSSL import crypto, SSL
def create_self_signed_cert(myHostName):
"""Create a self-signed certificate for the host."""
# create a key pair
k = crypto.PKey()
k.generate_key(crypto.TYPE_RSA, 4096)
# create a self-signed cert
cert = crypto.X509()
cert.get_subject().C = "US"
cert.get_subject().ST = "NY"
cert.get_subject().L = "Armonk"
cert.get_subject().O = "IBM"
cert.get_subject().OU = "Watson"
cert.get_subject().CN = myHostName
cert.set_serial_number(1000)
cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(10*365*24*60*60)
cert.set_issuer(cert.get_subject())
cert.set_pubkey(k)
cert.sign(k, 'sha1')
return (crypto.dump_certificate(crypto.FILETYPE_PEM, cert),
crypto.dump_privatekey(crypto.FILETYPE_PEM, k))
myHostName = socket.gethostname().split('.')[0]
(certificate, privatekey) = create_self_signed_cert(myHostName)
print(certificate)
print(privatekey)
投稿コメント 0
Tagged with:
encryption ssl