On Jul 4, 11:24 am, Chris Rebert <c...@rebertia.com> wrote: > On Sat, Jul 4, 2009 at 1:12 AM, Lacrima<lacrima.ma...@gmail.com> wrote: > > Hello! > > > I am trying to use urllib to fetch some internet resources, using my > > client x509 certificate. > > I have divided my .p12 file into mykey.key and mycert.cer files. > > Then I use following approach: > >>>> import urllib > >>>> url = 'https://example.com' > >>>> xml = '''<request> > > ... <somexml>somexml</somexml> > > </request>''' > >>>> opener = urllib.URLopener(key_file = 'mykey.key', cert_file = > >>>> 'mycert.cer') > >>>> f = opener.open(url, xml) > > > This works Ok! But every time I am asked to enter PEM pass phrase, > > which I specified during dividing my .p12 file. > > So my question... What should I do to make my code fetch any url > > automatically (without asking me every time to enter pass phrase)? > > As I understand there is impossible to specify pass phrase while > > constructing URLopener. > > So what should I do? > > Subclass FancyURLopener > [http://docs.python.org/library/urllib.html#urllib.FancyURLopener], > overriding the prompt_user_passwd() method > [http://docs.python.org/library/urllib.html#urllib.FancyURLopener.prom...]. > Then use an instance of your subclass instead of URLopener. > > Cheers, > Chris > --http://blog.rebertia.com
Hi Chris, Thanks for your quick reply. According to docs the return value of prompt_user_passwd() method should be a tuple (user, password), but there is no user when authenticating with certificate. So how should I use this method? This doesn't work: >>> import urllib >>> class MyOpener(urllib.FancyURLopener): ... def prompt_user_passwd(self, host, realm): ... return ('password') ... With regards, Max -- http://mail.python.org/mailman/listinfo/python-list