Přesměrování nešifrované komunikace na protokol HTTPS: Porovnání verzí

Z enTeam
Skočit na navigaci Skočit na vyhledávání
(Založena nová stránka s textem „==Přesměrování nešifrované komunikace na protokol HTTPS==“)
 
Řádek 1: Řádek 1:
==Přesměrování nešifrované komunikace na protokol HTTPS==
+
==Nastavení HTTPS==
 +
Pro zajištění bezpečnosti komunikace klientů s webovým rozhraním aplikace enTeam doporučujeme nastavit šifrovanou komunikaci pomocí protokolu HTTPS.<br>
 +
Nastavení HTTPS se liší dle způsobu provozování webového rozhraní (služba OS Windows vs. aplikace provozovaná v IIS).
 +
 
 +
===Předpoklady===
 +
Jediným předpokladem nastavení HTTPS je existence použitelného SSL certifikátu, který splňuje následující podmínky:
 +
* je platný (časově)
 +
* je vydaný na doménu, na které je provozováno webové rozhraní enTeam
 +
* obsahuje rozšíření "Server Authentication" (Extended Key Usage = Server Authentication)
 +
* je vydán uznávanou certifikační autoritou
 +
* obsahuje privátní klíč
 +
 
 +
Pro jednoduchost budeme dále v textu předpokládat, že certifikát je na serveru importován do úložiště certifikátů <code>LocalMachine\My</code> a je dostupný pro uživatele, pod kterým běží webový server s webovým rozhraním enTeam.
 +
 
 +
===Služba OS Windows===
 +
V případě, že webové rozhraní enTeam je provozováno jako služba operačního systému Windows, je pro jeho běh použit webový server Kestrel.<br>
 +
Kompletní dokumentaci nastavení webového serveru Kestrel lze nalézt na https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-8.0
 +
 
 +
====Zjištění údajů certifikátu====
 +
 
 +
Pro konfiguraci je třeba znát buď:
 +
* <code>Subject</code>, nebo
 +
* <code>Thumbprint</code> – např. <code>AB12CD34EF56...</code>
 +
 
 +
Tyto údaje je možné zjistit pomocí aplikace PowerShell:
 +
<syntaxhighlight lang="powershell">
 +
Get-ChildItem -Path Cert:\LocalMachine\My
 +
</syntaxhighlight>
 +
 
 +
====Konfigurace appsettings.json====
 +
V adresáři projektu upravte soubor <code>appsettings.json</code>:
 +
 
 +
<b>Varianta se Subject:</b>
 +
<syntaxhighlight lang="json">
 +
{
 +
  "Kestrel": {
 +
    "Endpoints": {
 +
      "Https": {
 +
        "Url": "https://*:5001",
 +
        "Certificate": {
 +
          "Subject": "<... zjištěná hodnota Subject ...>",
 +
          "Store": "My",
 +
          "Location": "LocalMachine",
 +
          "AllowInvalid": false
 +
        }
 +
      }
 +
    }
 +
  }
 +
}
 +
</syntaxhighlight>
 +
 
 +
<b>Varianta s Thumbprint:</b>
 +
<syntaxhighlight lang="json">
 +
{
 +
  "Kestrel": {
 +
    "Endpoints": {
 +
      "Https": {
 +
        "Url": "https://*:5001",
 +
        "Certificate": {
 +
          "Thumbprint": "<... zjištěná hodnota Thumbprint ...>",
 +
          "Store": "My",
 +
          "Location": "LocalMachine",
 +
          "AllowInvalid": false
 +
        }
 +
      }
 +
    }
 +
  }
 +
}
 +
</syntaxhighlight>
 +
 
 +
'''Poznámka:''' Klíč <code>AllowInvalid: false</code> zakazuje použití samo-podepsaných (self-signed) certifikátů. V neprodukčním prostředí lze jejich použití povolit nastavením hodnoty <code>true</code>.
 +
 
 +
== 4. Přístupová práva ==
 +
 
 +
Pokud je certifikát uložen v <code>LocalMachine\My</code>, aplikace musí mít odpovídající oprávnění:
 +
* Spouštěj jako správce
 +
* Nebo běž jako Windows služba s přístupem k privátním klíčům
 +
 
 +
Pro ladění můžeš použít <code>StoreLocation.CurrentUser</code>, kde oprávnění nejsou potřeba.

Verze z 29. 8. 2025, 10:04

Nastavení HTTPS

Pro zajištění bezpečnosti komunikace klientů s webovým rozhraním aplikace enTeam doporučujeme nastavit šifrovanou komunikaci pomocí protokolu HTTPS.
Nastavení HTTPS se liší dle způsobu provozování webového rozhraní (služba OS Windows vs. aplikace provozovaná v IIS).

Předpoklady

Jediným předpokladem nastavení HTTPS je existence použitelného SSL certifikátu, který splňuje následující podmínky:

  • je platný (časově)
  • je vydaný na doménu, na které je provozováno webové rozhraní enTeam
  • obsahuje rozšíření "Server Authentication" (Extended Key Usage = Server Authentication)
  • je vydán uznávanou certifikační autoritou
  • obsahuje privátní klíč

Pro jednoduchost budeme dále v textu předpokládat, že certifikát je na serveru importován do úložiště certifikátů LocalMachine\My a je dostupný pro uživatele, pod kterým běží webový server s webovým rozhraním enTeam.

Služba OS Windows

V případě, že webové rozhraní enTeam je provozováno jako služba operačního systému Windows, je pro jeho běh použit webový server Kestrel.
Kompletní dokumentaci nastavení webového serveru Kestrel lze nalézt na https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-8.0

Zjištění údajů certifikátu

Pro konfiguraci je třeba znát buď:

  • Subject, nebo
  • Thumbprint – např. AB12CD34EF56...

Tyto údaje je možné zjistit pomocí aplikace PowerShell: <syntaxhighlight lang="powershell"> Get-ChildItem -Path Cert:\LocalMachine\My </syntaxhighlight>

Konfigurace appsettings.json

V adresáři projektu upravte soubor appsettings.json:

Varianta se Subject: <syntaxhighlight lang="json"> {

 "Kestrel": {
   "Endpoints": {
     "Https": {
       "Url": "https://*:5001",
       "Certificate": {
         "Subject": "<... zjištěná hodnota Subject ...>",
         "Store": "My",
         "Location": "LocalMachine",
         "AllowInvalid": false
       }
     }
   }
 }

} </syntaxhighlight>

Varianta s Thumbprint: <syntaxhighlight lang="json"> {

 "Kestrel": {
   "Endpoints": {
     "Https": {
       "Url": "https://*:5001",
       "Certificate": {
         "Thumbprint": "<... zjištěná hodnota Thumbprint ...>",
         "Store": "My",
         "Location": "LocalMachine",
         "AllowInvalid": false
       }
     }
   }
 }

} </syntaxhighlight>

Poznámka: Klíč AllowInvalid: false zakazuje použití samo-podepsaných (self-signed) certifikátů. V neprodukčním prostředí lze jejich použití povolit nastavením hodnoty true.

4. Přístupová práva

Pokud je certifikát uložen v LocalMachine\My, aplikace musí mít odpovídající oprávnění:

  • Spouštěj jako správce
  • Nebo běž jako Windows služba s přístupem k privátním klíčům

Pro ladění můžeš použít StoreLocation.CurrentUser, kde oprávnění nejsou potřeba.