1

IdentityServer3ライブラリを使用してasp.net Web APIを保護しようとしています。IdentityServer3自己署名入りの証明書を使用しているプロバイダタイプが無効です

私は、次のようなセキュリティtokesに署名するための自己署名証明書を作成しました:

My Self-Sign Certificate

私は私の承認サーバー

http://localhost:53180/connect/token

"InnerException": { 
    "Message": "An error has occurred.", 
    "ExceptionMessage": "Invalid provider type specified.\r\n", 
    "ExceptionType": "System.Security.Cryptography.CryptographicException", 
    "StackTrace": " at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)\r\n at System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)\r\n at System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()\r\n at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 dwKeySize, CspParameters parameters, Boolean useDefaultKeySize)\r\n at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()\r\n at System.IdentityModel.Tokens.X509AsymmetricSecurityKey.get_PrivateKey()\r\n at System.IdentityModel.Tokens.X509AsymmetricSecurityKey.GetSignatureFormatter(String algorithm)\r\n at System.IdentityModel.Tokens.AsymmetricSignatureProvider..ctor(AsymmetricSecurityKey key, String algorithm, Boolean willCreateSignatures) in c:\\workspace\\WilsonForDotNet45Release\\src\\System.IdentityModel.Tokens.Jwt\\AsymmetricSignatureProvider.cs:line 147" 
を呼び出すときに、私は次の例外を得ました

証明書の秘密鍵に問題があるようです:

Private Key Problem 助けてください!

+0

IdentityServer4で同じ問題が発生しました。 –

答えて

0

参照:https://github.com/IdentityServer/IdentityServer3/issues/2859

あなたは、従来のCSPではなく、CNGによって管理される秘密鍵と証明書が必要です。

Windows Server 2016またはWindows 10で実行している場合は、New-SelfSignedCertificateコマンドレットが大幅に拡張され、必要なすべてのオプションが追加されました。次のコマンドは、従来のCSPによって管理される秘密鍵を使用して、トークン署名に適した証明書を生成します。

New-SelfSignedCertificate -CertStoreLocation cert:\localmachine\my ` 
-FriendlyName "Token Signing" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3") ` 
-KeyUsage DigitalSignature -KeyAlgorithm RSA -KeyLength 2048 -KeySpec Signature ` 
-DnsName ([System.Net.Dns]::GetHostByName($env:computerName).HostName) 

重要な部分は、プライベート用のレガシーCSPの使用を強制-KeySpec署名ですキー。

関連する問題