As of today, the official way for self-hosted Ghost Blog to use HTTPS is to use Nginx as a front end proxy server. The official guide is here.
My Way
There are many reasons to use a proxy server in front of NodeJS service such as Ghost. However, it seems overkill in my situation. I come up with 2 ways to just use NodeJS to support HTTPS with Ghost 0.11.4.
Method 1 : Single NodeJS Instance
Install Ghost and test everything working normally. Then modify index.js in Ghost installation root as below
Security risk is lower compare with Method 1 as the proxy can be run under different user than Ghost. Ghost NodeJS instance no longer need nor has access to certificate files.
No modification within the Ghost installation. It is more future proof.
No need to configure and maintain additional software packages, like Nginx, outside of the NodeJS knowledge domain.
Cons
Additional NodeJS instance, but should still use less resources than Nginx or other proxy server.
Which method and is this for you?
Maybe, or maybe not.
It works for me, but may not suit your needs. You will have to weight your own pros and cons, like security concern, site traffic, goal, needs, resources, skill set, etc.