Comment utiliser HTTPS / SSL avec Kestrel dans ASP.NET noyau 2.x?
j'utilise actuellement ASP.NET noyau 2.x et je l'ai utilisé pour être en mesure d'obtenir Kestrel pour utiliser HTTPS / SSL simplement de le mettre dans le UseUrls()
méthode comme ceci:
var host = new WebHostBuilder()
.UseUrls("http://localhost", "https://111.111.111.111")
.UseKestrel()
.Build();
Mais maintenant, je reçois l'exception:
System.InvalidOperationException:
HTTPS endpoints can only be configured using KestrelServerOptions.Listen().
comment configurer Kestrel pour utiliser SSL dans ASP.NET noyau 2.x?
2 réponses
L'essentiel. Utiliser Les URLs Du Serveur
si vous voulez associer votre serveur pour utiliser toutes les adresses IP attribuées au serveur / hôte web, alors vous pouvez le faire:
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000", "http://*:80")
.UseStartup<Startup>()
.Build();
Note: le format de chaîne utilisé dans le UseUrls()
méthode est la suivante: http://{ip address}:{port number}
.
- Si vous utilisez un *
(astérisques) pour l'adresse IP, c'est-à-dire toute adresse IP disponible sur l'hôte.
- Le numéro de port n'est pas obligatoire. Si vous le laissez vide, il va par défaut sur le port 80.
il y a beaucoup de détails supplémentaires sur le UseUrls()
méthode l'officiel de Microsoft Docs ici.
Cependant, SSL ne fonctionnera pas avec le
UseUrls()
méthode - - - donc, si vous essayez d'ajouter une URL commençant parhttps://
le programme va lancer l'exceptionSystem.InvalidOperationException: HTTPS endpoints can only be configured using KestrelServerOptions.Listen().
point de Terminaison configuration. Utiliser HTTPS et lier un certificat SSL
IMPORTANT NOTE:
L'hébergement sur un public endpoint via Kestrel (même avec SSL) n'est pas recommandé et vous devez utiliser des technologies comme les proxies inverses (comme Nginx ou IIS) au lieu d'exposer Kestrel dans la nature.
- - - vous pouvez lire plus à ce sujet de la documents officiels de Microsoft ici.
les paramètres HTTPS ne peuvent être configurés qu'en utilisant KestrelServerOptions
.
voici un exemple d'utilisation des sockets TCP avec Listen
méthode:
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options =>
{
options.Listen(IPAddress.Loopback, 5000); // http:localhost:5000
options.Listen(IPAddress.Any, 80); // http:*:80
options.Listen(IPAddress.Loopback, 443, listenOptions =>
{
listenOptions.UseHttps("certificate.pfx", "password");
});
})
.UseStartup<Startup>()
.Build();
Note: Si vous utilisez les deux Listen
méthode et UseUrls
, le Listen
les points de terminaison de remplacer les UseUrls
les points de terminaison.
vous pouvez trouver plus d'informations sur la mise en place des paramètres ici à la Microsoft officielle Docs.
si vous utilisez IIS, les liaisons D'URL pour IIS supplantent toutes les liaisons que vous définissez en appelant
Listen
ouUseUrls
. Pour plus d'informations, voir Introduction à ASP.NET module de base.
vous n'avez pas besoin d'implémenter https avec kestrel seul. Si vous exécutez une application qui nécessite https, il est très probable qu'elle va faire face à l'extérieur vers l'internet. Cela signifie que vous devez exécuter kestrel derrière Nginx ou Apache et que l'un d'eux gère la requête https pour vous.