BizTalk Server 中证书的已知问题
本部分介绍管理用于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 消息的证书需要重新加载到个人存储区中。
解决方法
从个人存储区删除现有的证书,然后使用证书导入向导将证书重新导入到个人存储区。 为此,请右键单击“个人存储”下的“证书”文件夹,指向“所有任务”,然后单击“导入”。
对进程内主机实例和独立主机实例使用相同的登录,以确保识别个人存储
只有在为登录凭据与主机实例关联的用户加载了用户配置文件时,个人证书存储区才可用于消息处理。 个人存储区用于签名证书和解密证书(用户自己的私钥)。 默认情况下,将为进程内主机实例加载用户配置文件;但默认情况下不会为独立主机实例加载用户配置文件。 您可以通过应用程序为独立主机加载用户配置文件。 另外,也可以通过对进程内主机实例和独立主机实例使用相同的登录名来解决此问题。
您可以创建空服务来加载用户配置文件,而无需让应用程序来加载此文件。 有关创建空服务的详细信息,请参阅 如何:在 Visual Studio 帮助中创建 Windows Services (https://go.microsoft.com/fwlink/?LinkId=155149) 。
创建空服务以加载配置文件后,请按如下所示操作:
单击 “开始”,然后单击“ 运行 ”打开“ 运行 ”对话框。
在“ 运行 ”对话框中,键入 service.msc ,然后按 Enter 打开 “服务 MMC”管理单元。
打开所创建服务的 “属性 ”对话框。 右键单击服务,然后选择“属性”。
单击“ 登录 ”选项卡,选择“ 此帐户”,然后输入用于独立主机实例的登录名。
单击 “确定” 。
手动启动服务以加载该登录用户的用户配置文件。
证书的“密钥用法”属性必须与证书的用途匹配
用于 AS2 传输的证书必须具有实现其用途所需的属性。 对于签名和签名验证,证书的“密钥用法”属性必须为“数字签名”。 对于加密和解密,证书的“密钥用法”属性必须为“数据加密”或“密钥加密”。 可以通过双击证书、单击“证书”对话框中的“详细信息”选项卡并选中“密钥用法”字段来验证密钥使用情况属性。
如果没有对参与方设置 AS2-To 属性,则将为传出的 MDN 验证证书解析列表。
在传出的 MDN 的默认协议中,会执行证书解析列表验证。 如果您不希望执行此验证,请确保设置了正确的 AS2-To 参与方属性,以便能够解析接收方并且能够确定参与方属性。 这样的话,将不使用提示验证证书解析列表的默认协议。 您还将需要在 AS2 参与方属性的“常规”页上禁用“检查证书吊销列表”属性。