Modified pyopenssl example using evenlet
Signed-off-by: Aayush Kasurde <aayush.kasurde@gmail.com>
This commit is contained in:

committed by
Sergey Shepelev

parent
f81b135ae9
commit
0f81f03bf6
40
doc/ssl.rst
40
doc/ssl.rst
@@ -30,14 +30,24 @@ PyOpenSSL
|
|||||||
|
|
||||||
:mod:`eventlet.green.OpenSSL` has exactly the same interface as pyOpenSSL_ `(docs) <http://pyopenssl.sourceforge.net/pyOpenSSL.html/>`_, and works in all versions of Python. This module is much more powerful than :func:`socket.ssl`, and may have some advantages over :mod:`ssl`, depending on your needs.
|
:mod:`eventlet.green.OpenSSL` has exactly the same interface as pyOpenSSL_ `(docs) <http://pyopenssl.sourceforge.net/pyOpenSSL.html/>`_, and works in all versions of Python. This module is much more powerful than :func:`socket.ssl`, and may have some advantages over :mod:`ssl`, depending on your needs.
|
||||||
|
|
||||||
Here's an example of a server::
|
For testing purpose first create self-signed certificate using following commands ::
|
||||||
|
|
||||||
|
$ openssl genrsa 1024 > server.key
|
||||||
|
$ openssl req -new -x509 -nodes -sha1 -days 365 -key server.key > server.cert
|
||||||
|
|
||||||
|
Keep these Private key and Self-signed certificate in same directory as `server.py` and `client.py` for simplicity sake.
|
||||||
|
|
||||||
|
Here's an example of a server (`server.py`) ::
|
||||||
|
|
||||||
from eventlet.green import socket
|
from eventlet.green import socket
|
||||||
from eventlet.green.OpenSSL import SSL
|
from eventlet.green.OpenSSL import SSL
|
||||||
|
|
||||||
# insecure context, only for example purposes
|
# insecure context, only for example purposes
|
||||||
context = SSL.Context(SSL.SSLv23_METHOD)
|
context = SSL.Context(SSL.SSLv23_METHOD)
|
||||||
context.set_verify(SSL.VERIFY_NONE, lambda *x: True))
|
# Pass server's private key created
|
||||||
|
context.use_privatekey_file('server.key')
|
||||||
|
# Pass self-signed certificate created
|
||||||
|
context.use_certificate_file('server.cert')
|
||||||
|
|
||||||
# create underlying green socket and wrap it in ssl
|
# create underlying green socket and wrap it in ssl
|
||||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
@@ -45,7 +55,7 @@ Here's an example of a server::
|
|||||||
|
|
||||||
# configure as server
|
# configure as server
|
||||||
connection.set_accept_state()
|
connection.set_accept_state()
|
||||||
connection.bind(('127.0.0.1', 80443))
|
connection.bind(('127.0.0.1', 8443))
|
||||||
connection.listen(50)
|
connection.listen(50)
|
||||||
|
|
||||||
# accept one client connection then close up shop
|
# accept one client connection then close up shop
|
||||||
@@ -55,4 +65,28 @@ Here's an example of a server::
|
|||||||
client_conn.close()
|
client_conn.close()
|
||||||
connection.close()
|
connection.close()
|
||||||
|
|
||||||
|
Here's an example of a client (`client.py`) ::
|
||||||
|
|
||||||
|
import socket
|
||||||
|
# Create socket
|
||||||
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
# Connect to server
|
||||||
|
s.connect(('127.0.0.1', 8443))
|
||||||
|
sslSocket = socket.ssl(s)
|
||||||
|
print repr(sslSocket.server())
|
||||||
|
print repr(sslSocket.issuer())
|
||||||
|
sslSocket.write('Hello secure socket\n')
|
||||||
|
# Close client
|
||||||
|
s.close()
|
||||||
|
|
||||||
|
Running example::
|
||||||
|
|
||||||
|
In first terminal
|
||||||
|
|
||||||
|
$ python server.py
|
||||||
|
|
||||||
|
In another terminal
|
||||||
|
|
||||||
|
$ python client.py
|
||||||
|
|
||||||
.. _pyOpenSSL: https://launchpad.net/pyopenssl
|
.. _pyOpenSSL: https://launchpad.net/pyopenssl
|
||||||
|
Reference in New Issue
Block a user