Как я могу передать SSL-сертификат Nowin при использовании Nancy

поэтому я использую Нэнси С наказание.

красота использования Nowin заключается в том, что мне не нужно возиться с различными командами Windows для настройки простого веб-сервера. Согласно Nowin readme, я могу настроить SSL, используя следующую строку

builder.SetCertificate(new X509Certificate2("certificate.pfx", "password"));

однако при использовании Nancy у меня, похоже, нет доступа к этому классу Server builder. Все происходит как по волшебству за кулисами.

любые идеи, как я могу передать сертификат через наказание?

3 ответов


  1. убедитесь, что у вас есть Нэнси.Установлен пакет Owin.

  2. используйте такой код для запуска сервера:

.

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);
        }

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