У меня была похожая проблема, и вот как мне это удалось
примечание: это решение является рабочим решением для чистого websocket в dotnet core 2.2, я не тестировал его с signalR
использовать Apache в качестве прокси Microsoft Doc здесь
<IfModule mod_ssl.c>
<VirtualHost *:443>
ProxyPreserveHost On
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:81/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://127.0.0.1:81/$1 [P,L]
ProxyPass / http://127.0.0.1:81/
ProxyPassReverse / http://127.0.0.1:81/
</VirtualHost>
</IfModule>
так что в основном трафик будет HTTPS, пока Apache, а затем Apache будет действовать как прокси и передавать трафик Kestrel.
это может показаться сложным для настройки, но это не так,
- настроить Apache для работы с HTTP & WS
затем настройте шифрование давайте так:
sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-apache
sudo nano /etc/apache2/sites-available/example.com.conf
...
ServerName example.com;
...
sudo apache2ctl configtest
sudo systemctl reload apache2
sudo ufw allow 'Apache Full'
sudo ufw delete allow 'Apache'
следующая строка команды настроит вашу конфигурацию SSL Apache
sudo certbot --apache -d example.com -d www.example.com
тогда вы сможете получить доступ к своему сайту через HTTPS & WSS. До сих пор это не удавалось:)