Eu faria isso (não uma configuração completa, apenas mostrando o conceito):
<VirtualHost *:80>
ServerName example.org
ServerAlias www.example.org
Redirect Permanent / https://example.org
</VirtualHost>
<VirtualHost *:443>
ServerName example.org
ServerAlias www.example.org
RewriteEngine on
RewriteCond %{HTTP_HOST} !^example.org
RewriteRule (.*) https://example.org$1 [R=301,L]
</VirtualHost>
A ideia aqui é de um VirtualHost por porta, não por domínio. www.DOMAIN e DOMAIN é quase o mesmo. Portanto, qualquer pedido que vem na porta 80, ele redireciona para https na porta 443. Qualquer pedido que chegue à porta 443 será redirecionado para "ele mesmo", removendo o www, se necessário.
Combinar o VirtualHost via ServerAlias é limpo e simplifica sua configuração.
Você precisa adicionar certificados, registros, ... como eu disse, isso não está pronto para produção!