我正在尝试(和失败)replaceADFS 2.0独立安装的证书。 我已经生成了证书并将其放置在本地机器商店中。 但是,无论我做什么,我都不可避免地会遇到ADFS启动时报告的相同错误:
在处理联合身份validation服务configuration期间,发现元素“signingToken”具有无效数据。 已configuration的证书的私钥无法访问。 以下是证书的值:
元素:签名令牌
主题:CN =签名证书
- 根据自己的Active Directoryvalidation客户端
- ADFS 2.0:作为声明发送用户证书的颁发者
- 获取所有用户的列表loginADFS 2.0
- 如何在独立模式下安装ADFS 3.0?
- 用于连接到ADFS的移动设备的邮件客户端configuration了Office 365邮件
指纹:<snip>
storeName:我的
storeLocation:0
联合身份validation服务标识:NT AUTHORITY \ NETWORK SERVICE
…
用户操作
如果证书是从没有私钥的源导入的,请select具有私钥的证书,或者再次从包含私钥的源(例如,.pfx文件)中导入证书。
如果证书是在用户上下文中导入的,请确认上面指定的商店与证书导入到的商店相匹配。
如果证书是由未指定“机器密钥”选项并且密钥标记为可导出的证书请求生成的,请将带有私钥的证书从用户存储导出到.pfx文件,然后再将其直接导入到存储在configuration文件中指定。 如果密钥未标记为可导出,则使用“机器密钥”选项请求新的证书。
如果联合身份validation服务标识尚未授予对证书专用密钥的读取访问权限,请使用“证书”pipe理单元更正此情况。
那么,我已经遵循了上面提到的所有用户操作,而他们都没有解决这个问题。 我似乎也无法find任何人的build议,接下来要做哪些诊断步骤。 那么,现在我该怎么办?
我重新启动时遇到5个错误。 前四个如上所述,几乎没有变化:首先为Element: serviceIdentityToken和服务通信证书,然后是encryptionToken , additionalEncryptionTokens和signingToken用于我要用于解密和签名的证书,最后是:
启用联合身份validation服务的端点时出错。 使用PowerShell cmdlet修复configuration错误并重新启动联合身份validation服务。
我认为这第五个错误与前四个有关,但是如果不是,我可以为它增加更多细节。 SSL和签名证书都是由我们的域CA生成的。
我想试图获得更多的信息,所以(知道ADFS是用.NET编写的)我敲了一个.NET服务项目,试图获得相同的证书私钥,它会产生以下exception:
System.Security.Cryptography.CryptographicException: Invalid provider type specified. at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) at System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle) at System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair() at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 dwKeySize, CspParameters parameters, Boolean useDefaultKeySize) at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey() at WindowsService1.Service1.DoStuff() in c:\Dev\WindowsService1\WindowsService1\Service1.cs:line 45
哪些谷歌search导致我相信是与使用CNG存储的私钥相关的,这在.NET 4.0以前是不起作用的。 但是,我唯一的build议是纠正这个问题,或者a)更改CA服务器上的模板(我本人没有任何访问权限),或者b)导出和重新导入证书 – 但我已经试过一次了。
我找不到任何导出和导入证书的顺序来纠正这个问题,所以最后我们复制了 ADFS和Web Server 的证书模板 ,并使新的模板与2003 CA而不仅仅是2008兼容。
这反过来又使我们能够select较老的CSP,而不是仅仅基于CNG的CSP,这是新模板允许我们从私密密钥存储中select的。