Python Simple SSL Socket Server

前端 未结 2 1309
心在旅途
心在旅途 2020-12-15 09:58

Just trying to set up a simple SSL server. I have never had anything SSL work for me in the past. I have a loose understanding of how SSL certificates and signing.

T

相关标签:
2条回答
  • 2020-12-15 10:13

    In your example, you provide a certfile, but no keyfile. Both are required.

    0 讨论(0)
  • 2020-12-15 10:30

    you can use this command to generate a self-signed certificate

    openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout cert.pem
    

    the openssl framework will ask you to enter some information, such as your country, city, etc. just follow the instruction, and you will get a cert.pem file. the output file will have both your RSA private key, with which you can generate your public key, and the certificate. the output file looks like this:

    -----BEGIN RSA PRIVATE KEY-----
     # your private key
    -----END RSA PRIVATE KEY-----
    -----BEGIN CERTIFICATE-----
     # your certificate
    -----END CERTIFICATE-----
    

    just load it, and the ssl module will handle the rest for you:

    context.load_cert_chain(certfile="cert.pem", keyfile="cert.pem")
    

    btw, there is no "SSLContext" in python2. for guys who are using python2, just assign the pem file when wrapping socket:

    newsocket, fromaddr = bindsocket.accept()
    connstream = ssl.wrap_socket(newsocket,
                                 server_side=True,
                                 certfile="cert.pem",
                                 keyfile="cert.pem",
                                 ssl_version=YOUR CHOICE) 
    

    available ssl version: ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv23. if you have no idea, ssl.PROTOCOL_SSLv23 may be your choice as it provides the most compatibility with other versions.

    0 讨论(0)
提交回复
热议问题