#!/usr/bin/env python2 # $ for i in {tls1,tls1_1,tls1_2} ; do echo test | openssl s_client -connect localhost:3333 -quiet -CAfile server.pem-$i ; done import ssl, socket, sys print (sys.version) print (ssl.OPENSSL_VERSION) while True: try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(('127.0.0.1', 3333)) s.listen(10) s, _ = s.accept() s = ssl.wrap_socket( s, server_side=True, keyfile="server.pem", certfile="server.pem", ssl_version = ssl.PROTOCOL_TLS ) print (s.recv(16)) s.close() except Exception as e: print (str(e)) # $ cat server.pem # -----BEGIN CERTIFICATE----- # MIIDYDCCAkigAwIBAgIJAMtaWn0ONkNiMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV # BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX # aWRnaXRzIFB0eSBMdGQwHhcNMTcwOTEzMTUyODA5WhcNMTgwOTEzMTUyODA5WjBF # MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 # ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB # CgKCAQEApof9hLz7XfXdFaKKvuYNLrv8OXaFroEZh7sTFc+wQGLELAQ6zUF1SL2G # 0wI9BOqq4LDHLr/ku+3gZKdN4r8S31t7b/7LbovG6GHIYgaauADkWwEdNX4AD2Nr # n0QU68FsZMe/Q4sP42dtMKlUpRApBRpaDLP1tPQAALzT+yuv95jeDmICDgRGnyNl # ftlhORyyMJepksUCgrbDcAn4JIhdsmKXLvHmV/duShDOA2tfnnCpQLETUiyyhcxg # Om6x4z3OnyACxlSqWCnr78ixiot/CUEyvcvQtWYCmReoS6rnOmzOlxMJbwWwosnD # VjOKUMLSLW0zDnS2R0e5Vyta79X9jwIDAQABo1MwUTAdBgNVHQ4EFgQUj+pImHAY # 8ySK8g9ZBaZoU+uuCoIwHwYDVR0jBBgwFoAUj+pImHAY8ySK8g9ZBaZoU+uuCoIw # DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAk8+RWvRB42VcAu4L # FazL9R+R4PgzFtsDqJ0ohNX3R/mVzLtH1m1QvglWH7V5bZu1mNf0lx8MnFbiThow # ZWZ7cfv/HvBP+47kSuOX2vHLz9BeoBNfBEdc0gsLdg1WUGGpjKuOByDC2G7++Trf # CNqXlY3B2LWE4rfxncK5tjifuaMfF7dTp/syXJBHFKS9Cp80Q51jt5E/tLivbYYu # 2awxhtlKlPUcpwPfqd4m/CoaxoYb/K2KboedpX6/NGVmz+M2w+EcDhCO85xlGGVZ # EBthfX/GFVGaLJYO+RPKm93efAdog8/Yd1LUEzPNoAgKMj4VZtm0B26vB4yvbzci # eatNxw== # -----END CERTIFICATE----- # -----BEGIN PRIVATE KEY----- # MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCmh/2EvPtd9d0V # ooq+5g0uu/w5doWugRmHuxMVz7BAYsQsBDrNQXVIvYbTAj0E6qrgsMcuv+S77eBk # p03ivxLfW3tv/stui8boYchiBpq4AORbAR01fgAPY2ufRBTrwWxkx79Diw/jZ20w # qVSlECkFGloMs/W09AAAvNP7K6/3mN4OYgIOBEafI2V+2WE5HLIwl6mSxQKCtsNw # CfgkiF2yYpcu8eZX925KEM4Da1+ecKlAsRNSLLKFzGA6brHjPc6fIALGVKpYKevv # yLGKi38JQTK9y9C1ZgKZF6hLquc6bM6XEwlvBbCiycNWM4pQwtItbTMOdLZHR7lX # K1rv1f2PAgMBAAECggEALFsse56alXxXVtvkeNRtznTjyap4EPLyCeUaQEUBfSTR # e6fkwacdxjI1Jx8Bgb2/pflwFFOoaSYDDsxBQpQCQtvrFPmY1ekFIgBpjzKTI0+Z # g2PYk9brzS1+DP3lVKZAaNeLakIwCTITM1Lm6NBVHLbYJWoJmBklpwykqdIJHLl8 # 0QT+3gNRjrY8Q5+53255pMacBlvz5755IZgRxqWIZTa4Blko/1IObIYz271qjojA # u64h88+744eOTRkxTi6SJk+Ci9joiHdsqCPi38J6hjshmK8MtuFHoe3XtV06osDW # 7REaa+k9L0mULO370p+jZbg2/U9p5sV96YrSXWSqgQKBgQDYC0ksuqsxBFlS696f # /tpQ1Vy52V14MkeZiQKmui2E2wKEIjSsFH5q9G49thztv/S4GhdGkdJsSCWO8yqx # MnFYmZytrpCHQ/n6KrF1IN21cWzYwTKyMqJ76t+QCvMHKxH8TBC2KhPhWPEx0Y19 # 07RSO4pYRtmDS3YB8L6IEJWhqwKBgQDFVH4z2CBOXAY3ROacoo4JyQqWXj6PqChJ # lC44U7i4TWpwe3moqHGJks9gK7uysOoAko4aKAq7wEyvp9SRmCmcbpxPS3SHBLOB # nW1ssldJWRiE3wXqkRtOUXQF5z7MHX/9B4wwHbRu9UYZDHpGrA15D8As0z6kdlBb # br6KevQ3rQKBgQDThJkr9cbNwthBWzUnqDjOk1apjqr4lyGKrJ2v5u/R9yrLe0He # iGINDSsxuC8yhpFt/f1z1ikSYsCC6IiP3Dck66B+Wz6dcGw6BbqgVoE6t8Y9oUml # NfXnJNmlCVNPXVfKkB58e03jf1UF1YiV/MO7DxgvvY4QAb2TwMSKKtKU6QKBgQDA # 6bdva805jhGtmrhxTSHbQyYMlxpGSzkHpcwB2SdvVo/GY5AuaG6G9nWyKU8YhIhg # AubVf2vu3TKbT1Iq/D1B54j8pGHJVbk/7+34I+ndlTK5Q2d/SFkPmeX5l3b3CagE # cIqGx6OMDlF3T5GC4dVSEynnKKXHFru8h2nT7BwxCQKBgGGAd62eEOcV1eUlDHf4 # uvc39zulWxOBZlOcrHSWFIKiNYjafNB10uuaILYG9rtNXs/5zmkh7n81rAOQDNi1 # d8krVslqz9DKuBfpEbhttsWJl9EH7U68poCt4z40H90zbek7f/5EH4oUX4aBcGHs # wz9TlwGYRdJze4wjX+r2LkzN # -----END PRIVATE KEY-----