A short version of the answer to this question is: Only choose “Flexible” if your origin webserver cannot accept secure (HTTPS) connections. Choose “Full” if you have a self-signed SSL certificate, and choose “Full (strict)” if you have a valid SSL certificate.
Now for the detailed explanation. The SSL options let you control:
- If visitors can browse your website over a secure connection
- And when they do, how CloudFlare is going to connect to your origin webserver.
These options are listed in the order from the least secure (Off) to the most secure (Full SSL (Strict)). All of them are available, independently of your plan level.
Off: no secure connection between your visitor and CloudFlare, and no secure connection between CloudFlare and your web server either. This means that visitors can only view your website over HTTP, and any visitor attempting to connect via HTTPS will be returned a HTTP 301 Redirect to the plain HTTP version of your website.
Flexible SSL: secure connection between your visitor and CloudFlare, but no secure connection between CloudFlare and your web server. You don't need to have an SSL certificate on your web server, but your visitors still see the site as being HTTPS enabled. This option is not recommended if you have any sensitive information on your website. It should only be used as a last resort if you are not able to setup SSL on your own web server, but it is less secure than any other option (even “Off”), and could even cause you trouble when you decide to switch away from it: How do I fix the infinite redirect loop...
Full SSL: secure connection between your visitor and CloudFlare, and secure connection (but not authenticated) between CloudFlare and your web server. You will need to have your server configured to answer HTTPS connections, with a self-signed certificate at least. The authenticity of the certificate is not verified: from CloudFlare’s point of view (when we connect to your origin webserver), it’s the equivalent of bypassing this error message. But as long as the address of your origin webserver is correct in your DNS settings, you know that we’re connecting to your webserver, and not someone else’s.
Full SSL (Strict): secure connection between the visitor and CloudFlare, and secure and authenticated connection between CloudFlare and your web server. You will need to have your server configured to answer HTTPS connections, with a valid SSL certificate. This certificate must be signed by a certificate authority, have an expiration date in the future, and respond for the request domain name (hostname).
We hope this clarifies your understanding of these options. If your SSL is not working, please review these common reasons and how to resolve them here: