자체 서명된 SSL 인증서
자체 서명된 SSL 인증서를 동적으로 생성하기 위한 Python 코드입니다.
나는 원래 gRPC 를 사용하여 중앙 관리 서버에서 연결할 수 있도록 자체 등록을 위해 많은 수의 동적으로 생성된 서버(ASG)가 필요할 때 이 코드를 수집하고 작성했습니다. 그것은 멋진 프로토콜이지만 자체 서명된 인증서를 사용할 때 호스트 이름과 일치하는 서버의 인증서가 필요했습니다.
따라서 아래 코드는 모든 노드의 Python gRPC 서버 코드에 통합되었으며 ASG의 각 서버는 프로세스가 시작될 때마다 새로운 자체 서명된 SSL 인증서를 생성하고 각 서버는 존재와 공개 키를 임시 Zookeeper znode. 이는 해당 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