We need to offer a way for our users to create a custom CNAME to our servers, and to provide them SSL.
Example:
Our website: abc.com
Our customer has got a custom subdomain: customer-1.abc.com
He can create a CNAME: sub.customer-1.com pointing to customer-1.abc.com
It works, but of course, sub.customer-1.com is available on HTTP only (if this customer is not a Cloudflare user).
Is there a way for us to provide SSL support for external subdomains like sub.customer-1.com ?
Is your customer-1 host proxied or not? If it is, it would not work as you explained as Cloudflare would not know about the third party hostname.
If it isnt, it is not really a Cloudflare related question, but you will need to issue appropriate certificates yourself. What it basically comes down to is that your customers will need to add their domains to Cloudflare if they want certificates from Cloudflare.