I know that you can redirect 80 to 443 ssl, those are different ports. But in my case i want to serve everything on this port (82) via ssl. Maybe its possible to do it with playing custom error page since its showing an error page when i use http on this port but i don't know how
Não é possível hospedar texto criptografado e texto simples na mesma porta. Se alguém se conectar à porta de texto simples, digamos, porta 80 ou 81, você poderá encaminhá-la para sua porta HTTPS, por exemplo, 82 neste exemplo. Então, algo assim deveria fazer o truque:
# Plain-text rewrite:
<VirtualHost *:81>
DocumentRoot "/var/www/site"
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}:82%{REQUEST_URI}
<Directory "/var/www/site">
allow from all
Options -Indexes
</Directory>
</VirtualHost>
# SSL config
<VirtualHost *:82>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
DocumentRoot "/var/www/site"
<Directory "/var/www/site">
allow from all
Options -Indexes
</Directory>
</VirtualHost>
Neste caso, qualquer usuário que se conecte à porta 81 será encaminhado para a porta 82. Qualquer pessoa que se conecte à porta 82 será através de SSL.