Как создать и добавить ключ подписи для Identity Server 4? - PullRequest
0 голосов
/ 20 марта 2020

Я размещаю свое ASP. NET Базовое веб-приложение на CentOS. Мне нужно настроить ключ подписи для Identity Server. Этот ключ используется для подписи и проверки токена JWT.

Файл: tempkey.rsa

{
  "KeyId": "vbWO1QORQrwci26Cd7q59A",
  "Parameters": {
    "D": "IqOOHtuw10jHnCnrZbzh3TwA40q7KWuby22wl/ooRXn//XJktc8Hwe0JvxD8tvHtk4wfhzkUwiH+zY/cub+kI3oklD9diiWOjFIJcu+k9U9ocXg0ipvrk87rMM3x/u4im9HTYbkNU9Ru6pBdvb8ChAVWR5qOoSVDiFL1Yr8K+sSLix6nm6p0ax2CSf1sJEtNHDRrgI6mSOei97CpiuXpFX/JkwimqvbskcdQY91cgQ9poTWyuolFtFnOx0wSNEG4x1UWVsw85st5JHcU7pN0v1hhQZRcNYBfuZ7uHTFlhbkBip1D191pytSid8C4XTNiLbVPaY1pAqJhDLy6e7bi5Q==",
    "DP": "BVqSzlGs02ZFN9/xPug8VDZCxsReFmtd2xwhO8J7/JzGxxbbe9oq78q2blxDH6nY/I2M2DsKbm2BK2xE9ZHTkSuFHYw39OFHH3UZJNw8d3LMq8d2yZlzBTN21uKzVOwYd0zIchfvTIM3laOxW9j7sObOj8Nd/Pawkm2reFsmIzU=",
    "DQ": "BvpYLvxVPw7qrCtr6unhawV8ox4obq8WZEK/nu6hqBYxydW+zUJWv0fSYgygP9PYykGuTI+nYxCvm9rqw27uLoGsiEFT23Smzz5kDm0h+OzjJc5Wc+YL9wAI+O/xJ/Bi7uyKu+0eTMvG2Y5WpfYhJv2JZIWQUODHZ9SLDe8X3e8=",
    "Exponent": "AQAB",
    "InverseQ": "MKg8Pba2dyIsL3pumcR9e24fOZ8NIizJkTsDZoLkU2ccB6fFKfUioglHHL8ZEPKWT3ByJphJZv9JZIxgtCSLhFC1XcNLsWejPvEb6IMX9L1FIM7Ibo05L3tdZGTFsXwU9/3j2gk/ZFPKrnJXV9+6TToEAmxH7HIIPJONsfDBGho=",
    "Modulus": "nVpQtZgMHnpz9ZfnJs/sTkA8vqPldPe8IL9JQttcrE3RZKLKd+mrcleLqzrRtBCePHfLZMgoX19ShZeq2t4Ea6Sm+5SkV0l0862OD+ILnzFFqaqvQlra7UnRL2FXwxpp09LqLxoDq8fDXfHGOdMumP2TB6mozFgGWGBY9zlc9ctrDoSvfjsagcsLlp2LhCPAg4yCzyV/+4ADnls7NNnAc2Ba1MGFT5OJpfDggL+FXTMlHwTW8LJ9GsT4FAi5Z7dygLOnWc7zpl+Y9sSUtSNOAQlU+oX9VJQD6ZFbosM8nSHcjvCivpxAzOKn+5I6EQXis+pwne9VVjT27iv/NubG5Q==",
    "P": "z53dmREjm+MCchaWsvhPcWVWf7gGezix6KuGzMHa5vhVafrvv2rCy9aHSDWLpxPKb999/2Bw7ExI2b4DTuNkIJTLv/mQEl1PyhtbfLmclPHHbzTM9gnJ3nHrJhpj60/jbinFDkvzV++nqnTKToSgP2TNy5POXWn3FKNHgIxYNwM=",
    "Q": "wgXGJTOdv4B1owmtDmxucssRjWQzW0qEOCr/bBjT32ZofRI1HLBjOwnY4qzxmpD00voWLuphZSBUxtF47IZrrr33vNy2jedD3xy00fgBhuG0exxgQagCSTR0+QoccY8jOWYq2B+FsV9umpOEpgtqq67Moe/MkMp8Gg+8fqiLkfc="
  }
}

Теперь мне нужно сгенерировать производственный ключ для ASP. NET Базового приложения. Я использую Kestrel с Nginx. Как мне сгенерировать файл key.rsa и использовать его для производства?

Я проверял и другие вопросы. Они используют свой windows хранилище сертификатов для чтения сертификата. Мне нужно решение для работы с Centos, используя key.rsa.

Код пока ::

    // Code skipped for brevity....

    #region Add ASP.NET Core Identity Server
        // Using ASP.NET Core Identity Server
        services.AddIdentityServer()
            .AddConfigurationStore<MySQLConfigurationDbContext>()
            .AddOperationalStore<MySQLPersistedGrantDbContext>()
            .AddAspNetIdentity<Identity.BOL.IdentityUser>()                
            .AddDeveloperSigningCredential();
        #endregion

        // Use Authentication
        services.AddAuthentication();                
    }

1 Ответ

1 голос
/ 20 марта 2020

Мне не ясно, спрашиваете ли вы, как сгенерировать ключ или как его использовать, когда вы его сгенерировали. Я предполагаю второй вопрос, потому что у вас уже есть пример ключа, который вы произвели.

Вам нужно избавиться от .UseDeveloperSigningCredential() на .AddIdentityServer и использовать некоторые из другие удобные методы расширения:

https://identityserver4.readthedocs.io/en/latest/topics/startup.html#refstartupkeymaterial

или, если вам нужно что-то более индивидуальное, используйте следующие интерфейсы: https://identityserver4.readthedocs.io/en/latest/topics/crypto.html

По сути, эти расширения для сборщиков - это, вероятно, все, что вам нужно. Сохраняйте одну и ту же версию кода и просто используйте разные ключевые материалы для dev и live.

Это пример использования перегрузки x509 методов расширения, но вы используете те, которые имеют смысл для вашего ключевого материала:

    var x509 = new X509Certificate2(
         File.ReadAllBytes(somefilename),somepassword);

    services.AddIdentityServer(options =>
        {
            the options I care about
        })
        .AddSigningCredential(x509)
        .AddValidationKey(x509);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...