Přesměrování nešifrované komunikace na protokol HTTPS: Porovnání verzí
(Založena nová stránka s textem „==Přesměrování nešifrované komunikace na protokol HTTPS==“) |
|||
Řádek 1: | Řádek 1: | ||
− | == | + | ==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
Obsah
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
, neboThumbprint
– 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.