配置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,此处没有找到具体的解释,例如下面的案例:
添加以下配置