本部分介绍管理与 BizTalk Server 一起使用的数字证书的已知问题。
常规证书问题
缺少与证书吊销列表的连接将导致证书被拒绝
此问题涉及以下错误:“身份验证错误。 颁发用于对消息进行签名的证书的证书颁发机构(CA)的状态未知。即使在 BizTalk Server 上使用 BizTalk Server 用户通过 MMC 查看签名证书时,该错误仍可能发生。
如果在接收管道中的 S/MIME 解码器组件上启用了“检查证书吊销”属性,则可能会出现此情况。 如果此属性设置为 true,BizTalk Server 将尝试查询证书吊销列表(CRL),以查看传入证书是否已吊销。 证书本身是否未吊销并不重要。 如果 BizTalk Server 由于连接问题而无法查询相应的 CRL,则它不接受证书。 若要排查此错误,请双击所使用的证书来显示证书的属性。 在其“详细信息”选项卡中,将在字段列表中看到属性“CRL 分发点”。 此属性中应有多个指向 CA 服务器上的 CRL 的 URL。 BizTalk 服务器必须能够访问这些 URL 中的任何一个来检索 CRL。 否则,吊销检查将失败,并且将发布上述错误。
在访问“其他人员”证书存储之前,它不会被初始化。
当尝试使用 BizTalk Server 管理员控制台远程添加或修改发送/接收端口/位置时,此问题涉及以下证书存储错误:“无法打开证书存储”。 和“系统找不到指定的文件。 (系统)”。
注释
如果直接登录到 BizTalk Server,则可以使用管理控制台修改这些项目。
在新安装的计算机上,其他人证书 存储只有在访问过一次后才会初始化。 在组配置期间,可以初始化此 “其他人”证书 存储区,因此,在已执行组配置的计算机上看不到此错误。
BizTalk Server 仅支持每个 BizTalk 组的一个个人证书
BizTalk 组使用的个人证书是通过在 BizTalk 组属性中设置个人证书的指纹指定的。 BizTalk 组可以代表企业、部门、中心或其他业务部门。
AS2 证书问题
AS2 解码器不会验证是否已在主机上或目标方配置证书
只要证书存储中配置了该消息的专用证书,AS2 解码器就会解密消息。 但是,AS2 解码器不会验证解密证书是否与主机上配置的证书相同。 接收的消息可以使用多个证书进行加密。
如果证书无效,BizTalk Server 将无法解密以线路格式保存的消息
症状
BizTalk Server 无法解密以线性格式保存在不可抵赖数据库中的入站 AS2 消息。
可能的原因
解密消息所需的证书已过期或已吊销。 如果在 AS2 消息保存在非否认数据库中后经过一段时间,则更有可能发生这种情况。 如果发生这种情况,则可能无法立即访问消息的有效证书。
解决方案
获取用于解密消息的有效证书。
如果无法解密 AS2 消息,可以通过重新导入证书来修复此问题
症状
AS2 解码器尝试解密 AS2 消息时遇到异常,并引发以下错误:
"The AS2 Decoder encountered an exception during processing. Details of the message and exception are as follows:
AS2-From:"PARTNER" AS2-To:"HOME" MessageID:"<137706.1178060412333@servername>"
MessageType: "unknown" Exception:"An error occurred when decrypting an AS2 message."
System.ArgumentNullException: Value cannot be null.
Parameter name: PayloadContentType
at Microsoft.BizTalk.Edi.Reporting.Common.Utilities.ValidateArgument(Object o,
String parameterName, Boolean isEmptyStringValidationRequired)
at Microsoft.BizTalk.EdiInt.Reporting.AS2MessageActivity.ValidateParameters()
at Microsoft.BizTalk.EdiInt.Reporting.AS2MessageActivity.Create()"
可能的原因
用于解密 AS2 消息的证书需要重新加载到个人存储中。
解决方案
从个人存储中删除现有证书,然后使用证书导入向导将证书重新导入到个人存储中。 为此,请右键单击个人存储下的“证书”文件夹,指向“所有任务”,然后单击“导入”。
对进程内主机实例和独立主机实例使用相同的登录凭证,以确保个人存储被识别。
仅当为登录凭据与主机实例关联的用户加载用户配置文件时,个人证书存储才可用于消息处理。 个人存储区用于签署和解密证书(用户自己的私钥)。 默认情况下,进程内主机实例加载用户配置文件;但是,默认情况下不会为独立主机实例加载用户配置文件。 可以让应用程序加载独立主机的用户配置文件。 或者,可以通过对进程内主机实例和独立主机实例使用相同的登录来解决此问题。
可以创建一个空服务来加载配置文件,而不是让应用程序加载用户配置文件。 有关创建空服务的详细信息,请参阅 How to: Create Windows Services (https://go.microsoft.com/fwlink/?LinkId=155149) in Visual Studio Help.
创建空服务以加载个人资料后,请按照以下步骤继续操作:
单击“ 开始”,然后单击“ 运行 ”以打开“ 运行 ”对话框。
在 “运行 ”对话框中,键入 service.msc ,然后按 Enter 打开 服务 MMC 管理单元。
打开所创建服务的 “属性 ”对话框。 右键单击该服务,然后选择“ 属性”。
单击“ 登录 ”选项卡,选择“ 此帐户”,然后输入用于隔离主机实例的登录名。
单击 “确定” 。
手动启动该服务以加载该登录用户的用户配置文件。
证书的密钥使用属性必须与证书的使用匹配
用于 AS2 传输的证书必须具有其预期用途所需的属性。 对于签名和签名验证,证书的密钥使用属性必须是数字签名。 对于加密和解密,证书的密钥使用属性必须是数据加密或密钥加密。 可以通过双击证书、单击“证书”对话框中的“详细信息”选项卡和检查“密钥使用情况”字段来验证密钥使用情况属性。
如果未为相关方设置 AS2-To 属性,将对传出 MDN 的证书解析列表进行验证。
在发出 MDN 的默认协议中,将执行证书解析列表的验证。 如果不希望执行此验证,请验证是否已设置正确的 AS2-To party 属性,以便可以解析接收方,并且可以确定参与方属性。 如果是这样,则不会使用提示验证证书解析列表的默认协议。 还需要在 AS2 参与方属性的“常规”页上禁用“检查认证吊销列表”属性。