Как я могу передать сертификат 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);
        }

Надеюсь, это поможет вам, удачи.