Предоставленный сертификат недействителен для шифрования / дешифрования - PullRequest
0 голосов
/ 18 октября 2018

Я использую IdentityServer3 для аутентификации.IdentityServer3 использует сертификат подписи (сертификат, который используется для подписи токенов), созданный с использованием makecert ar в соответствии с этой статьей .

makecert -r -pe -n "CN=SigningOnlyCert" -b 01/01/2015 -e 01/01/2020 -sky signature -a sha256 -len 2048 -ss my -sr LocalMachine

Этот сертификат только для подписи работает нормально с identyserver3

Сейчас я пытаюсь добавить внешнего провайдера SAML2, используя библиотеку SustainSys .Я настроил SPOptions для загрузки того же сертификата только для подписи.как Saml2AuthenticationOptions.SPOptions.ServiceCertificates.Add(LoadCertificateFromWindwosStore()) Однако выдает ошибку

Указанный сертификат недействителен для шифрования / дешифрования.Возможно, недостаточно разрешений для его закрытого ключа в хранилище сертификатов Windows или сам сертификат может иметь неправильные цели.Если вы хотите использовать его только для подписи, установите для свойства Use значение Signing (CertificateUse.Signing).

При отладке кода библиотеки фактическим исключением является Bad Key.как упоминалось в # 412

Теперь убедитесь, почему этот сертификат не работает с SustainSys, когда он работает с IdentityServer3?

(Обратите внимание, что если я создаю новый сертификат SSL какза статью @brockallen,

makecert -r -pe -n "CN=SSLCert" -b 01/01/2015 -e 01/01/2020 -sky exchange -a sha256 -len 2048 -ss my -sr localMachine

, тогда библиотека SustainSys работает с сертификатом SSL, но не с сертификатом с указанием имени)

1 Ответ

0 голосов
/ 18 октября 2018

Это сообщение указывает, что сертификат может не иметь надлежащих флагов использования для шифрования / дешифрования.Но, если я вас правильно понимаю, вам на самом деле не нужно шифрование.Если это так, вы можете указать, что вы планируете использовать подпись.

Существует перегрузка этого метода ServiceCertificates.Add, который позволяет вам указать предполагаемое использование, например,

Saml2AuthenticationOptions.SPOptions.ServiceCertificates.Add(
  new ServiceCertificate
  {
    Certificate = LoadCertificateFromWindwosStore(),
    Use = CertificateUse.Signing
  }
);

.позвольте вам использовать его для подписи исходящих запросов на вход / выход из системы и будут публиковаться с меткой метаданных при использовании = подписи.

Обратите внимание, что это отличается от сертификата IDP, который он использует для подписи ответов.Это настраивается вместе с остальной информацией IDP в списке IdentityProviders (в идеале, для автоматического получения сертификата используется MetadataLocation).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...