How can I force HTTPS for all images?
You need to use a module like Pathologic which will force protocol relative URLs for all assets.

https://www.drupal.org/project/pathologic

The public:// path is a stream wrapper, and has no effect on whether the browser sees http/https or not. Pathologic will fix all of this for you.