Как я могу передать SSL-сертификат Nowin при использовании Nancy
поэтому я использую Нэнси С наказание.
красота использования Nowin заключается в том, что мне не нужно возиться с различными командами Windows для настройки простого веб-сервера. Согласно Nowin readme, я могу настроить SSL, используя следующую строку
builder.SetCertificate(new X509Certificate2("certificate.pfx", "password"));
однако при использовании Nancy у меня, похоже, нет доступа к этому классу Server builder. Все происходит как по волшебству за кулисами.
любые идеи, как я могу передать сертификат через наказание?
3 ответов
убедитесь, что у вас есть Нэнси.Установлен пакет 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();
}
}
}
Я думаю, вы должны следовать способом, описанным в этой статье:https://msdn.microsoft.com/en-us/magazine/dn451439.aspx Сначала вы создаете веб-сервер в соответствии с документацией Nowin, а затем добавляете Nancy в качестве компонента конвейера. Я тестировал этот способ с помощью NowingSample (из пакета Nowin), и он работает.
Если вы посмотрите на документ, в нем говорится следующее:
конфигурация OWIN
Он просто будет там, если хост отправит его.
Если вы используете IIS в качестве хоста. Вам нужно будет сделать то же самое config как с Aspnet. И вам понадобится хост OWIN Aspnet, который поддерживает ClientCertificate. В OWIN demo в Нанси делает. Один @prabirshrestha тоже делает.
In демо-версия OWIN, проверьте эта строка:
if (request.ClientCertificate != null && request.ClientCertificate.Certificate.Length != 0)
{
env[OwinConstants.ClientCertificate] = new X509Certificate(request.ClientCertificate.Certificate);
}
надеюсь, это поможет Вам, удачи.