[pyOpenSSL] 'internal error' on 0.5.1
Remy C. Cool
dev-python at smartology.nl
Wed Jul 30 11:28:05 CEST 2003
Hi,
For my application, I created a class sslTransport and used this in
creating the server object.
class sslTransport(xmlrpclib.SafeTransport):
"""Enables ssl transport with client certificates."""
def __init__(self, x509):
"""Added to enable client SSL certificates."""
self.x509 = x509
def make_connection(self, host):
"""Extended to include x509 certificate."""
return xmlrpclib.SafeTransport.make_connection(self, (host,
self.x509))
And the client code:
x509 = {'key_file': 'client.pkey',
'cert_file':'client.cert'}
server = xmlrpclib.ServerProxy('https://host:port',
sslTransport(x509))
Regards,
Remy Cool
On Tuesday 29 July 2003 19:54, Yannick Gingras wrote:
> Hi,
> I try do customize the SafeTransport of xmlrpclib to do
> certificate validation (signature and the like). I use you
> SecureXMLRPCServer from the distribution.
>
> It works perfectly if I keep the standard SafeTransport but if I
> try :
>
>
> class CustomTransport(SafeTransport):
> def make_connection(self, host):
> conn = SafeTransport.make_connection(self, host)
> addr = (conn._conn.host, conn._conn.port)
> ctx = SSL.Context(SSL.SSLv23_METHOD)
> ctx.set_options(SSL.OP_NO_SSLv2)
> sslConn = SSL.Connection( ctx, socket.socket(
> socket.AF_INET, socket.SOCK_DGRAM) ) sslConn.connect(addr)
> sslConn.set_connect_state()
> sslConn.renegotiate()
> sslConn.do_handshake()
> # must update the socket in conn here
> print (sslConn.get_peer_certificate())
> # do the certificate validation here
> return conn
>
>
> I receive this trace :
>
> File "/usr/lib/python2.2/xmlrpclib.py", line 821, in __call__
> return self.__send(self.__name, args)
> File "/usr/lib/python2.2/xmlrpclib.py", line 975, in __request
> verbose=self.__verbose
> File "/usr/lib/python2.2/xmlrpclib.py", line 833, in request
> h = self.make_connection(host)
> File
> "/home/ygingras/BelugaERP/belugaerp/core/client/SimpleClient.py",
> line 32, in make_connection
> sslConn.do_handshake()
> SSL.Error [('SSL routines', 'SSL_clear', 'internal error')]
>
> I'm not a SSL guru so I wonder what I may have done wrong. Is this
> the right way to make a SLL connection with pyOpenSSL ? I use
> Python 2.2.2 on Red Hat 9. OpenSSL is a custom build of 0.9.7b (I
> tried M2Crypto).
>
> Thanks for your time !
More information about the pyopenssl-users
mailing list