Невозможно использовать Давайте зашифруем сертификат в Azure Web App - PullRequest
0 голосов
/ 08 мая 2019

Я только что установил этот плагин в свое веб-приложение Azure https://github.com/shibayan/azure-appservice-letsencrypt

Он отлично работает как SSL-сертификат для хостинга на моем пользовательском домене.

enter image description here

Но теперь мне нужно использовать этот сертификат для подписи операции в моем бэкэнде (это сервер идентификации)

Итак, вот мой код для использования этого сертификата, расположенный в startup.cs:

using (var store = new X509Store(StoreName.My, StoreLocation.CurrentUser))
{
    store.Open(OpenFlags.ReadOnly);
    var col = store.Certificates.Find(X509FindType.FindByThumbprint, "mythumbprint", false);
    if (col.Count > 0)
    {
      builder.AddSigningCredential(col[0]); // the builder of identityserver
    }
    else
    {
        throw new Exception("Startup Error: Unable to find signing certificate");
    }

    _logger.LogInformation(col[0].PublicKey.Key.KeyExchangeAlgorithm);    
}

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

col[0].PublicKey.Key.KeyExchangeAlgorithm

Я получаю это исключение:

System.NotSupportedException: Алгоритм ключа сертификата не поддерживается.в System.Security.Cryptography.X509Certificates.PublicKey.get_Key ()

В соответствии с документацией ядра dotnet (https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.x509certificates.publickey.key?view=netframework-4.8) и github (https://github.com/dotnet/corefx/blob/master/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates/PublicKey.cs), только RSA и DSA являютсяподдерживается.

Итак, мой вопрос: что я могу сделать? Я пытался преобразовать сертификат в файл pfx, но не нашел секретный ключ этого сертификата (у меня есть только отпечаток)

1 Ответ

1 голос
/ 10 мая 2019

Вам не нужно использовать выданный центром сертификации сертификат для подписи токена, чтобы вы могли просто выполнить самопроверку.В Windows следующая команда создаст сертификат с правильными свойствами:

makecert -r -pe -n "CN=MyCertName" -b 01/01/2019 -e 01/01/2039 -eku 1.3.6.1.5.5.7.3.3 -sky signature -a sha256 -len 2048 -ss my -sr LocalMachine
...