bad certificate error

Nick Craig-Wood nick at craig-wood.com
Tue Jul 28 03:29:56 EDT 2009


jakecjacobson <jakecjacobson at gmail.com> wrote:
>  I am getting the following error when doing a post to REST API,
> 
>  Enter PEM pass phrase:
>  Traceback (most recent call last):
>    File "./ices_catalog_feeder.py", line 193, in ?
>      main(sys.argv[1])
>    File "./ices_catalog_feeder.py", line 60, in main
>      post2Catalog(catalog_host, catalog_port, catalog_path, os.path.join
>  (input_dir, file), collection_name, key_file, cert_file)
>    File "./ices_catalog_feeder.py", line 125, in post2Catalog
>      connection.request('POST', path, parameters, head)
>    File "/usr/lib/python2.4/httplib.py", line 810, in request
>      self._send_request(method, url, body, headers)
>    File "/usr/lib/python2.4/httplib.py", line 833, in _send_request
>      self.endheaders()
>    File "/usr/lib/python2.4/httplib.py", line 804, in endheaders
>      self._send_output()
>    File "/usr/lib/python2.4/httplib.py", line 685, in _send_output
>      self.send(msg)
>    File "/usr/lib/python2.4/httplib.py", line 652, in send
>      self.connect()
>    File "/usr/lib/python2.4/httplib.py", line 1079, in connect
>      ssl = socket.ssl(sock, self.key_file, self.cert_file)
>    File "/usr/lib/python2.4/socket.py", line 74, in ssl
>      return _realssl(sock, keyfile, certfile)
>  socket.sslerror: (1, 'error:14094412:SSL
>  routines:SSL3_READ_BYTES:sslv3 alert bad certificate')
> 
> 
>  My code where this error occurs is:
> 
>  head = {"Content-Type" : "application/x-www-form-urlencoded",
>  "Accept" : "text/plain"}
>  parameters = urlencode({"collection" : collection, "entryxml" : open
>  (file,'r').read()})
>  print "Sending the file to: " + host
> 
>  try:
>  	try:
>  		# Default port is 443.
>  		# key_file is the name of a PEM formatted file that contains your
>  private key.
>  		# cert_file is a PEM formatted certificate chain file.
>  		connection = httplib.HTTPSConnection(host, int(port), key_file,
>  cert_file)
>  		connection.request('POST', path, parameters, head)
>  		response = connection.getresponse()
>  		print response.status, response.reason
>  	except httplib.error, (value,message):
>  		print value + ':' + message
>  finally:
>  	connection.close()
> 
>  I was wondering if this is due to the server having a invalid server
>  cert?

I'd say judging from the traceback you messed up key_file or cert_file
somehow.

Try using the openssl binary on them (read the man page to see how!)
to check them out.

>  If I go to this server in my browser, I get a "This server tried to
>  identify itself with invalid information".  Is there a way to
>  ignore this issue with Python?  Can I setup a trust store and add
>  this server to the trust store?

Invalid how?  Self signed certificate? Domain mismatch? Expired certificate?

-- 
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick



More information about the Python-list mailing list