Revision 65c6b8e0 lib/http.py
b/lib/http.py | ||
---|---|---|
228 | 228 |
@param ssl_cert_path: Path to file containing SSL certificate in PEM format |
229 | 229 |
|
230 | 230 |
""" |
231 |
ssl_key_pem = utils.ReadFile(ssl_key_path) |
|
232 |
ssl_cert_pem = utils.ReadFile(ssl_cert_path) |
|
231 |
self.ssl_key_pem = utils.ReadFile(ssl_key_path)
|
|
232 |
self.ssl_cert_pem = utils.ReadFile(ssl_cert_path)
|
|
233 | 233 |
|
234 |
cr = OpenSSL.crypto |
|
235 |
self.cert = cr.load_certificate(cr.FILETYPE_PEM, ssl_cert_pem) |
|
236 |
self.key = cr.load_privatekey(cr.FILETYPE_PEM, ssl_key_pem) |
|
237 |
del cr |
|
234 |
def GetKey(self): |
|
235 |
return OpenSSL.crypto.load_privatekey(OpenSSL.crypto.FILETYPE_PEM, |
|
236 |
self.ssl_key_pem) |
|
237 |
|
|
238 |
def GetCertificate(self): |
|
239 |
return OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, |
|
240 |
self.ssl_cert_pem) |
|
238 | 241 |
|
239 | 242 |
|
240 | 243 |
class _HttpSocketBase(object): |
... | ... | |
244 | 247 |
def __init__(self): |
245 | 248 |
self._using_ssl = None |
246 | 249 |
self._ssl_params = None |
250 |
self._ssl_key = None |
|
251 |
self._ssl_cert = None |
|
247 | 252 |
|
248 | 253 |
def _CreateSocket(self, ssl_params, ssl_verify_peer): |
249 | 254 |
"""Creates a TCP socket and initializes SSL if needed. |
... | ... | |
265 | 270 |
if not self._using_ssl: |
266 | 271 |
return sock |
267 | 272 |
|
273 |
self._ssl_key = ssl_params.GetKey() |
|
274 |
self._ssl_cert = ssl_params.GetCertificate() |
|
275 |
|
|
268 | 276 |
ctx = OpenSSL.SSL.Context(OpenSSL.SSL.SSLv23_METHOD) |
269 | 277 |
ctx.set_options(OpenSSL.SSL.OP_NO_SSLv2) |
270 | 278 |
|
271 |
ctx.use_privatekey(ssl_params.key)
|
|
272 |
ctx.use_certificate(ssl_params.cert)
|
|
279 |
ctx.use_privatekey(self._ssl_key)
|
|
280 |
ctx.use_certificate(self._ssl_cert)
|
|
273 | 281 |
ctx.check_privatekey() |
274 | 282 |
|
275 | 283 |
if ssl_verify_peer: |
... | ... | |
288 | 296 |
""" |
289 | 297 |
assert self._ssl_params, "SSL not initialized" |
290 | 298 |
|
291 |
mykey = self._ssl_params.key |
|
292 |
mycert = self._ssl_params.cert |
|
293 |
|
|
294 |
return (mycert.digest("sha1") == cert.digest("sha1") and |
|
295 |
mycert.digest("md5") == cert.digest("md5")) |
|
299 |
return (self._ssl_cert.digest("sha1") == cert.digest("sha1") and |
|
300 |
self._ssl_cert.digest("md5") == cert.digest("md5")) |
|
296 | 301 |
|
297 | 302 |
|
298 | 303 |
class _HttpConnectionHandler(object): |
Also available in: Unified diff