Я использую 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, но не с сертификатом с указанием имени)