﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc
91	python: (2.7.6) trouble with SSL (to access repo from https)	Lewis Rosenthal		"I wanted to test accessing an encrypted repo over SSL. As www.2rosenthals.com is also available over SSL (with a recognized thrid-party cert), I simply edited my repo files to use https instead of http in the URI. However, yum check-update comes back with:

{{{
Traceback (most recent call last):
  File ""J:\USR\BIN\YUM"", line 29, in <module>
    yummain.user_main(sys.argv[1:], exit_code=True)
  File ""/@unixroot/usr/share/yum-cli/yummain.py"", line 254, in user_main
    errcode = main(args)
  File ""/@unixroot/usr/share/yum-cli/yummain.py"", line 109, in main
    result, resultmsgs = base.doCommands()
  File ""/@unixroot/usr/share/yum-cli/cli.py"", line 352, in doCommands
    self._getTs(needTsRemove)
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/depsolve.py"", line 99, in _getTs
    self._getTsInfo(remove_only)
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/depsolve.py"", line 110, in _getTsInfo
    pkgSack = self.pkgSack
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/__init__.py"", line 777, in <lambda>
    pkgSack = property(fget=lambda self: self._getSacks(),
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/__init__.py"", line 567, in _getSacks
    self.repos.populateSack(which=repos)
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/repos.py"", line 279, in populateSack
    sack.populate(repo, mdtype, callback, cacheonly)
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/yumRepo.py"", line 164, in populate
    if self._check_db_version(repo, mydbtype):
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/yumRepo.py"", line 223, in _check_db_version
    return repo._check_db_version(mdtype)
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/yumRepo.py"", line 1227, in _check_db_version
    repoXML = self.repoXML
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/yumRepo.py"", line 1419, in <lambda>
    repoXML = property(fget=lambda self: self._getRepoXML(),
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/yumRepo.py"", line 1411, in _getRepoXML
    self._loadRepoXML(text=self)
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/yumRepo.py"", line 1401, in _loadRepoXML
    return self._groupLoadRepoXML(text, self._mdpolicy2mdtypes())
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/yumRepo.py"", line 1376, in _groupLoadRepoXML
    if self._commonLoadRepoXML(text):
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/yumRepo.py"", line 1201, in _commonLoadRepoXML
    result = self._getFileRepoXML(local, text)
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/yumRepo.py"", line 986, in _getFileRepoXML
    size=102400) # setting max size as 100K
  File ""/@unixroot/usr/lib/python2.7/site-packages/yum/yumRepo.py"", line 810, in _getFile
    size=size
  File ""/@unixroot/usr/lib/python2.7/site-packages/urlgrabber/mirror.py"", line 411, in urlgrab
    return self._mirror_try(func, url, kw)
  File ""/@unixroot/usr/lib/python2.7/site-packages/urlgrabber/mirror.py"", line 397, in _mirror_try
    return func_ref( *(fullurl,), **kwargs )
  File ""/@unixroot/usr/lib/python2.7/site-packages/urlgrabber/grabber.py"", line 927, in urlgrab
    return self._retry(opts, retryfunc, url, filename)
  File ""/@unixroot/usr/lib/python2.7/site-packages/urlgrabber/grabber.py"", line 845, in _retry
    r = apply(func, (opts,) + args, {})
  File ""/@unixroot/usr/lib/python2.7/site-packages/urlgrabber/grabber.py"", line 913, in retryfunc
    fo = URLGrabberFileObject(url, filename, opts)
  File ""/@unixroot/usr/lib/python2.7/site-packages/urlgrabber/grabber.py"", line 1001, in __init__
    self._do_open()
  File ""/@unixroot/usr/lib/python2.7/site-packages/urlgrabber/grabber.py"", line 1072, in _do_open
    fo, hdr = self._make_request(req, opener)
  File ""/@unixroot/usr/lib/python2.7/site-packages/urlgrabber/grabber.py"", line 1168, in _make_request
    fo = opener.open(req)
  File ""/@unixroot/usr/lib/python2.7/urllib2.py"", line 404, in open
    response = self._open(req, data)
  File ""/@unixroot/usr/lib/python2.7/urllib2.py"", line 422, in _open
    '_open', req)
  File ""/@unixroot/usr/lib/python2.7/urllib2.py"", line 382, in _call_chain
    result = func(*args)
  File ""/@unixroot/usr/lib/python2.7/site-packages/urlgrabber/keepalive.py"", line 347, in https_open
    return self.do_open(req)
  File ""/@unixroot/usr/lib/python2.7/site-packages/urlgrabber/keepalive.py"", line 233, in do_open
    h = self._get_connection(host)
  File ""/@unixroot/usr/lib/python2.7/site-packages/urlgrabber/keepalive.py"", line 350, in _get_connection
    return self._ssl_factory.get_https_connection(host)
AttributeError: SSLFactory instance has no attribute 'get_https_connection'
}}}

Python appears to have been compiled with SSL, e.g.:

{{{
>>> import ssl

}}}

comes back with no errors, and:

{{{
>>> import httplib
>>> conn = httplib.HTTPSConnection(""mail.google.com"")
>>> conn.request(""GET"", ""/"")
>>> r1 = conn.getresponse()
>>> print r1.status, r1.reason
}}}

comes back with:

{{{
200 OK
}}}

which leads me to believe that SSL is indeed working.

Looking at the related SSLFactory code, it appears that without M2Crypto, we fall back on python's SSL. I attempted to install M2Crypto, but ran into other problems (related to setupttols not installing).

"	defect	closed	major		python			fixed		
