平台: 所有平台 适用于: COMSOL 模型管理器, COMSOL 模型管理器服务器, COMSOL Multiphysics® 版本:

问题描述

在 COMSOL Multiphysics 中尝试通过安全连接访问服务器(例如,连接“模型管理器服务器”数据库,或通过方法代码向 Web 服务器发送 HTTPS 请求)时,系统提示如下错误消息:unable to find valid certification path to requested target。

解决方法

该错误消息表明 COMSOL Multiphysics 所使用的 Java 运行时环境不信任当前的服务器证书。请根据 COMSOL Multiphysics 所在的操作系统,按照以下说明进行操作,以确保服务器证书被正确识别和信任。

另外,您也可以联系服务器管理员,要其为服务器证书配置指向公共证书颁发机构 (CA) 的信任链。配置完成后,Java 运行时环境通常就能直接信任该证书。

信任服务器证书

首先,您需要确定服务器证书链的根证书(通常是您所在组织的本地 CA 证书)。如果您尚未获取该证书文件,请参阅下文的获取服务器证书链 一节。

您可以将待信任的证书暂时存放在运行 COMSOL Multiphysics 的计算机上的任意临时目录中。按照下述步骤将证书导入信任存储库后,该证书文件将不再需要被使用,您可以将其从临时位置移除。

在 Windows 上(适用于 COMSOL 6.2 及更高版本)

从 6.2 版本开始,COMSOL Multiphysics 使用 Windows 操作系统内置的信任存储库。因此,您只需将根证书导入 Windows 的信任存储库即可。

  1. 启动 Windows 内置的 certlm.msc 工具,并导航至受信任的根证书颁发机构 > 证书文件夹。
  2. 操作菜单中选择导入,然后单击下一步以指定要导入的文件。
  3. 单击浏览或键入待导入证书的路径,将其添加为受信任的根证书。
  4. 依次单击下一步下一步完成,并确认该证书已显示在证书列表中。

在 Linux®、macOS 或 Windows 上(适用于 COMSOL 6.1 及更低版本)

在 Linux 和 macOS 系统(以及安装了 COMSOL 6.1 及更低版本的 Windows 系统)中,COMSOL Multiphysics 使用其安装目录下 Java 运行时自带的信任存储库。

  1. 找到 COMSOL Multiphysics 安装目录下的 Java keytool 的路径。各平台的默认路径如下:
    • Linux:/usr/local/comsol62/multiphysics/java/glnxa64/jre/bin/keytool
    • macOS:/Applications/COMSOL62/Multiphysics/java/maci64/jre/bin/keytool
    • Windows:C:\Program Files\COMSOL\COMSOL62\Multiphysics\java\win64\jre\bin\keytool.exe
    • 如果您使用的是基于 ARM64 架构的平台,请将上述路径中的 glnxa64maci64 分别替换为 glnxarm64macarm64
  2. 使用 -importcert -cacerts -file myrootcert.pem -alias myrootcert 变元运行 keytool ,其中,-file 变元应指向要导入的根证书,-alias 为导入的根证书条目在信任存储库中的别名。
    • 需要具有对安装目录的写入权限才能运行此命令。
    • 所使用的别名在密钥库中必须唯一,无需与文件名一致。如果要导入多个根证书,请为每个证书使用不同的别名。
  3. 输入 Java cacerts 文件的密码,默认为 changeit
  4. 查看证书信息,并在系统询问是否导入时回答 yes
    • 如果出现错误提示 "Certificate not imported, alias already exists",说明该别名已被使用。请改用其他别名,或者在导入新证书之前,先使用 -delete -cacerts -alias myrootcert 删除现有根证书。

注意:系统上可能安装有其他 COMSOL 软件。请务必定位到您所使用的 COMSOL Multiphysics 版本的安装目录,并在其对应的 Java 运行环境下运行 keytool 。即使是连接到“模型管理器服务器”,也仍然是 COMSOL Multiphysics 这一侧需要信任服务器的证书,因此无需对“模型管理器服务器”安装目录执行此操作。

如何获取服务器证书链

Java keytool 已包含在 COMSOL Multiphysics 安装目录中,其默认路径请参见上文信任服务器证书 一节。

  1. 使用 -printcert -rfc -sslserver hostname:port 变元运行 keytool ,其中,hostname:port 为服务器的主机名及其安全端口。
    • 如果出现 "No certificate from the SSL server" 错误,请检查主机名是否正确(不要包含 https:// 前缀),以及所填端口是否为安全端口(而非服务器的非安全 HTTP 端口)。
  2. 输出内容应为以 -----BEGIN CERTIFICATE----- 开头、以 -----END CERTIFICATE----- 结尾的若干块文本。请将最后一个块复制到剪贴板,这通常对应证书链的根证书。
  3. 将复制的块粘贴到文本编辑器中,并将文件保存为 myrootcert.pem,存放于任意临时位置即可。

注意:请确保您与服务器之间的连接处于可信网络中,否则理论上,中间人攻击可能导致您从恶意方获取证书链。为了降低此类攻击风险,建议在获取证书链后,通过可信渠道与服务器管理员联系,对根证书的指纹进行验证,确认无误后再将其添加为信任证书。