
Apache libcloud - a unified interface into the cloud
====================================================

The goal of this project is to create a basic yet functional standard library
into various cloud providers.

Apache libcloud is an incubator project at the Apache Software Foundation, see
<http://incubator.apache.org/libcloud> for more information.

For API documentation and examples, see:
  <http://incubator.apache.org/libcloud/getting-started.html>


Important Security Note
=======================

Python's built-in SSL module does not do certificate validation.

To address this, we've introduced the libcloud.security module with tunable
parameters.

View the entire guide at: <http://wiki.apache.org/incubator/LibcloudSSL>

Enabling SSL Certificate Check
==============================

   import libcloud.security
   libcloud.security.VERIFY_SSL_CERT = True

   # optionally, add to CA_CERTS_PATH
   libcloud.security.CA_CERTS_PATH.append("/path/to/your/cacerts.txt")

CA_CERTS_PATH contains common paths to CA bundle installations on the
following platforms:

 * openssl on CentOS/Fedora
 * ca-certificates on Debian/Ubuntu/Arch/Gentoo
 * ca_root_nss on FreeBSD
 * curl-ca-bundle on Mac OS X

Note for OS X Users
===================

OS X root certificates are stored in the Keychain format, unlike the standard
PEM format available on other *nix platforms.  For this reason, it is not
possible to include the standard OS X root certificates with CA_CERTS_PATH.

Acquiring CA Certificates
=========================

If the above packages are unavailable to you, and you don't wish to roll your
own, the makers of cURL provides an excellent resource, generated from
Mozilla: http://curl.haxx.se/docs/caextract.html

Feedback
========

Please send feedback to the mailing list at <libcloud@incubator.apache.org>,
or the JIRA at <https://issues.apache.org/jira/browse/LIBCLOUD>.
