Как я могу передать сертификат SSL в Nowin при использовании Nancy
Итак, я использую Nancy с Nowin.
Красота использования Nowin заключается в том, что мне не нужно возиться с различными командами Windows, чтобы настроить простой веб-сервер. В соответствии с обновлением Nowin я могу настроить SSL, используя следующую строку
builder.SetCertificate(new X509Certificate2("certificate.pfx", "password"));
Однако при использовании Nancy у меня нет доступа к этому классу строителя Server. Кажется, что все происходит волшебно за кулисами.
Любые идеи о том, как передать сертификат через Nowin?
Ответы
Ответ 1
-
Убедитесь, что у вас установлен пакет Nancy.Owin.
-
Используйте этот код, чтобы запустить сервер:
.
using System;
using System.Net;
using System.Threading.Tasks;
using Nancy.Owin;
using Nowin;
public class Program
{
static void Main(string[] args)
{
var myNancyAppFunc = NancyMiddleware.UseNancy()(NancyOptions options =>
{
// Modify Nancy options if desired;
return Task.FromResult(0);
});
using (var server = ServerBuilder.New()
.SetOwinApp(myNancyAppFunc)
.SetEndPoint(new IPEndPoint(IPAddress.Any, 8080))
.SetCertificate(new X509Certificate2("certificate.pfx", "password"))
.Build()
)
{
server.Start();
Console.WriteLine("Running on 8080");
Console.ReadLine();
}
}
}
Ответ 2
Я думаю, вам следует следовать описанным в этой статье образом: https://msdn.microsoft.com/en-us/magazine/dn451439.aspx
Сначала вы создаете веб-сервер в соответствии с документацией Nowin, после чего добавляете компонент Nancy в качестве компонента конвейера. Я тестировал этот способ с помощью NowingSample (из пакета Nowin), и он работает.
Ответ 3
Если вы посмотрите этот документ, в нем говорится следующее:
Конфигурация OWIN
Он будет там, если хост отправит его.
Если вы используете IIS в качестве хоста. Вам нужно будет сделать тот же config как с Aspnet. И вам понадобится хост OWIN Aspnet, который поддерживает ClientCertificate. Один из OWIN demo в Nancy делает. То же самое делает @prabirshrestha.
В OWIN Demo отметьте эту строку:
if (request.ClientCertificate != null && request.ClientCertificate.Certificate.Length != 0)
{
env[OwinConstants.ClientCertificate] = new X509Certificate(request.ClientCertificate.Certificate);
}
Надеюсь, это поможет вам, удачи.