ICE安全插件配置实操

项目场景:

配置ICE安全插件,部署所用到的工具主要有icegridnode、icegridregistry、icegridadmin等


问题描述一

plug-in initiallization failed: IceSSL:unable to validate private key(s):unknow key type

在这里插入图片描述


原因分析:

在所有节点中,只有该节点出现了这个问题,其他节点都可以正常加载安全插件,并完成证书验证,所以这个问题并不一定会出现。
正常来说应该不是配置参数的问题,有可能是证书的问题。但是重新构建证书链后依然存在问题。此时切记切记,不要在怀疑是ICE的问题(ICE的bug大概率不会被你碰到),也不要怀疑证书链的问题(因为你已经尝试了很多次),考虑版本的问题,使用ldd命令查看出问题的链接库,ldd能够显示可执行模块的依赖。
在这里插入图片描述
下面是不正常情况下的,发现依赖中有两个libcrypto.so,但是他们分属于不同的版本1.0.0和1.0.1。重新编译验证后发现就是他的问题。


解决方案:

重新编译ICE,配置正确的链接库。

问题描述二

icegridnode:security:certificate verfication failure
Network:IceSSL:certificate verfication failed:certificate is not yet valid

在这里插入图片描述


原因分析:

由于ICE中使用了OpenSSL,证书中有一个有效时间段,当客户端或服务器的系统时间不在这个时间段内时SSL会因证书验证失败而无法连接。在此处的错误提示中,可以知道尚未进入客户端和服务器的握手阶段,本机在加载证书的时候就检测到了证书异常。原因是,证书创建的时间要晚于当前系统时间。
系统时间错误是很常见的,因不能上网而未开时间自动同步,bios没电了,客户疏忽等原因都会导致系统时间设置有误。如果连接失败后需要重新设置系统时间,设置时间就需要在root权限下使用‘date -s’命令


解决方案:

date -s 2022/10/1 && date -s 10:10:10修改系统时间

问题描述三

error while parsing endpoint 'invalid endpoint 'ssl -h 192.168.0.187' in 'DemoIceGrid/Locator:ssl -h 192.168.0.187 -p 4062' '

在这里插入图片描述


原因分析:

每一个问题都是经历了很多次的验证失败后才解决的。本例中的问题,是无法解析的节点,该节点就是" ssl -h 192.168.0.187’ in ‘DemoIceGrid/Locator:ssl -h 192.168.0.187 -p 4062’ "。在默认情况下不使用ssl协议,系统可以正常运行,但是改为ssl就失败了,分析认为是程序不能解析ssl协议,换一种说法是ICE程序未能成功加载安全插件。反观自己的配置,似乎配置齐全了。

#
# SSL Configuration
#
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=certs
IceSSL.CAs=ca.pem
IceSSL.CertFile=node.p12
IceSSL.Password=password
IceSSL.Keychain=../../../certs/node.keychain
IceSSL.KeychainPassword=password
IceSSL.TrustOnly.Client=CN="Server";CN="Master";CN="Slave"
IceSSL.TrustOnly.Server=CN="Master";CN="Slave"

但有一点是我没考虑到的,工具icegridadmin部署服务所加载的配置文件*.xml文件中也需要配置icessl,此处没有找到具体的解释,例如下面的案例:

<icegrid>
  <application name="Simple">

    <properties id="Secure-Ice.Admin">
      <property name="Ice.Plugin.IceSSL" value="IceSSL:createIceSSL"/>
      <property name="IceSSL.CAs" value="ca.pem"/>
      <property name="IceSSL.CertFile" value="server.p12"/>
      <property name="IceSSL.Password" value="password"/>
      <property name="IceSSL.DefaultDir" value="certs"/>
      <property name="IceSSL.Keychain" value="../../../certs/server.keychain"/>
      <property name="IceSSL.KeychainPassword" value="password"/>

      <property name="Ice.Admin.Endpoints" value="ssl -h localhost"/>
      <property name="IceSSL.TrustOnly.Client" value="CN=Master;CN=Slave"/>
      <property name="IceSSL.TrustOnly.Client" value="CN=Master;CN=Slave"/>
      <property name="IceSSL.TrustOnly.Server.Ice.Admin" value="CN=Node"/>
    </properties>

    <node name="Node">
      <server id="SimpleServer" exe="./server" activation="on-demand">
        <adapter name="Hello" endpoints="tcp -h localhost">
          <object identity="hello" type="::Demo::Hello" property="Identity"/>
        </adapter>

        <properties>
           <properties refid="Secure-Ice.Admin"/>
           <property name="IceMX.Metrics.Debug.GroupBy" value="id"/>
           <property name="IceMX.Metrics.Debug.Disabled" value="1"/>
           <property name="IceMX.Metrics.ByParent.GroupBy" value="parent"/>
           <property name="IceMX.Metrics.ByParent.Disabled" value="1"/>
        </properties>
      </server>
    </node>

  </application>
</icegrid>

解决方案:

添加以下配置

<icegrid>
  <application name="Simple">

    <properties id="Secure-Ice.Admin">
      <property name="Ice.Plugin.IceSSL" value="IceSSL:createIceSSL"/>
      <property name="IceSSL.CAs" value="ca.pem"/>
      <property name="IceSSL.CertFile" value="server.p12"/>
      <property name="IceSSL.Password" value="password"/>
      <property name="IceSSL.DefaultDir" value="certs"/>
      <property name="IceSSL.Keychain" value="../../../certs/server.keychain"/>
      <property name="IceSSL.KeychainPassword" value="password"/>

      <property name="Ice.Admin.Endpoints" value="ssl -h localhost"/>
      <property name="IceSSL.TrustOnly.Client" value="CN=Master;CN=Slave"/>
      <property name="IceSSL.TrustOnly.Client" value="CN=Master;CN=Slave"/>
      <property name="IceSSL.TrustOnly.Server.Ice.Admin" value="CN=Node"/>
    </properties>
  </application>
</icegrid>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
配置ICE环境变量几乎是使用ICE(Internet Communications Engine)框架的第一步。下面是配置ICE环境变量的步骤: 1. 下载和安装ICE:首先,你需要从ICE官方网站下载适用于你操作系统的ICE框架,并进行安装。安装过程中,可以选择将ICE框架安装到哪个目录。 2. 打开命令行终端:打开一个命令行终端窗口,以便执行后续的操作。 3. 确定ICE安装目录:在命令行终端中,请确保你知道ICE框架的安装目录。如果你对安装目录不确定,可以在计算机上进行搜索。 4. 配置环境变量:使用命令行终端,找到你的计算机的环境变量设置。在Windows操作系统中,可以在"控制面板" -> "系统" -> "高级系统设置" -> "环境变量"中找到。在Linux和MacOS操作系统中,在命令行终端中输入"nano ~/.bash_profile"来编辑环境变量文件。 5. 添加ICE环境变量:在环境变量设置中,找到PATH变量,并在其后添加ICE框架的安装目录,以分号(Windows)或冒号(Linux和MacOS)分隔。 6. 保存并关闭环境变量设置:保存所做的更改,并关闭环境变量设置窗口。 7. 检查ICE环境变量:在命令行终端中,输入"icegridadmin --version"命令来验证ICE环境变量是否配置正确。如果成功安装和配置,会显示出ICE框架的版本信息。 通过按照这些步骤配置ICE环境变量,你就可以开始使用ICE框架进行开发和构建应用程序了。请确保根据你的操作系统和环境进行适当的配置

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值