python xmlrpc client with ssl client certificates and standard modules
massimodipierro71 at gmail.com
Mon Jan 4 15:05:32 CET 2010
If it is a client problem than web2py will be on help.
If your server is written already you may be able to use it with the
ssl cherrypy wsgi server (the one that web2py uses) and you do not
need web2py at all.
On Jan 4, 3:38 am, News123 <news... at free.fr> wrote:
> Thanks for your answer.
> I'll look at web2py.
> However web2py seems to address the xmlrpc server (at least in your
> example). The xmlrpc server application exists alerady and requires a
> client certificate.
> The client example doesn't seem to be using a certificate.
> So I'll be reading a little into web2py.
> mdipierro wrote:
> > xmlrpc acts at the application layer and ssl at the transport layer so
> > they can inter operate easily as long as you do not use the
> > certificate to authenticate the client but only validate the server
> > and encrypt data (which you can also do but it is more complicated)
> > One option for you is to use web2py which include an xmlrpc server
> > that uses a wsgi ssl enabled web server.
> > Here is how:
> > 1) Install web2py
> > 2) Visithttp://127.0.0.1:8000/adminand create a new application from
> > the web based IDE
> > 3) create your web service for example, in a controller default.py
> > @service.xmlrpc
> > def add(a,b): return int(a)+int(b)
> > 4) Restart web2py with
> > python web2py.py -a ADMIN_PASSWD -c SSL_CERTIFICATE -k
> > SSL_PRIVATE_KEY -i 0.0.0.0 -p 443
> > 5) You can now access the service from any Python program:
> > >>> import xmlrpclib
> > >>> server_url = 'https://myserver:443/yourapp/default/call/
> > xmlrpc'
> > >>> server = xmlrpclib.Server(server_url)
> > >>> print server.add(3,4)
> > 7
> > Hope this helps.
> > On Jan 3, 8:12 pm, News123 <news... at free.fr> wrote:
> >> Hi,
> >> I was googling fot quite some time and was not really succesfull.
> >> I found one solution, which I will try soon.
> >> It ishttp://www.cs.technion.ac.il/~danken/xmlrpc-ssl.html
> >> (found inhttp://hamakor.org.il/pipermail/python-il/2008-February/000029.html)
> >> This will probably work, but it requires the module M2Crypto.
> >> In order to avoid installing M2Crypto an all hosts that want to run the
> >> script I wondered, whether there is no other solution.
> >> I can do xmlrpc over ssl WITHOUT certificates with following code:
> >> import xmlrpclib
> >> server_url = 'https://myserver'
> >> server = xmlrpclib.Server(server_url);
> >> and I can perform a https get request WITH certificates with below snippet:
> >> import httplib
> >> conn = httplib.HTTPSConnection(
> >> HOSTNAME,
> >> key_file = KEYFILE,
> >> cert_file = CERTFILE
> >> )
> >> conn.putrequest('GET', '/')
> >> conn.endheaders()
> >> response = conn.getresponse()
> >> print response.read()
> >> I'm just lost of how to 'combine' both.
> >> Thanks in advance for any suggestions / hints
> >> N
More information about the Python-list