ADS错误6326在AES256加密的数据库上启用TLS通信加密

2020-09-22 10:03发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


最近,我们通过.add数据字典v 11.1.0.24将.dbf表迁移到.adt。

经过一些努力,到目前为止,它工作正常。

现在,我们还需要使用TLS加密通信,并且我们已完成以下操作:

a)创建了2个证书,一个用于服务器(带有密码),另一个用于客户端。

b)将服务器证书(servercert.pem)放置在Advantage Database Server所在的文件夹中,并将以下条目添加到注册表中:

" TLS_KEY_FILE" =" servercert.pem"
" TLS_KEY_PASSWORD" =" xxxxx"
" RECEIVE_TLS_PORT" = dword:00001877

重新启动ads_cfg.exe并通过netstats -a确认服务器正在侦听端口6262和6263:

TCP 0.0.0.0:6262 Server7:0侦听
TCP 0.0.0.0:6263 Server7:0侦听

c)将客户端证书(clientcert.pem)复制到可执行文件所在的文件夹中。

请注意,我们已经使用AES256加密创建了.add,并启用了ADS_DD_ENCRYPT_COMMUNICATION标志。 相应的SSL dll(libeay32.dll和ssleay32.dll)位于Window \ SysWOW64(32位版本)中,而64位版本也位于ads_cfg.exe,ads.exe所在的位置。

d)启动我们的应用程序,该应用程序调用adConnect101()并传递以下连接字符串(pwd和url已替换为伪文本):

数据源=" C:\ develop \ v23 \ sample \ abacus.add"; ServerType = 2; 用户ID =" ABASYS"; 密码=" abc"; Shared = TRUE; DDPassword =" xyz"; CommType = TLS; TLSCertificate =" C:\ develop \ v23 \ Programs \ clientcert.pem"; TLSCommonName = www.abc.com ;

这是我们因错误而停在轨道上的地方:

错误6326:OpenSSL库中发生错误。 OpenSSL错误:5,套接字错误:0

如果我编辑ads.ini(位于我们的exe文件所在的位置,c:\ develop \ v23 \ programs)并设置LAN_PORT = 6263(而不是默认的6262),则会收到错误6097(我已添加规则) 进入Windows防火墙,以允许TCP,UDP用于6262和6263端口,甚至暂时禁用防火墙,但是任何错误都会持续存在。

如果.add未加密或使用aes256加密,则不会有任何问题; 仅当我们尝试为后者进行TLS通信加密时。

在这个阶段,我不知道还有什么遗漏:

+其他SSL库?

+是在服务器端还是在客户端,还是在这两者上都是其他配置?

任何指导都将不胜感激。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


最近,我们通过.add数据字典v 11.1.0.24将.dbf表迁移到.adt。

经过一些努力,到目前为止,它工作正常。

现在,我们还需要使用TLS加密通信,并且我们已完成以下操作:

a)创建了2个证书,一个用于服务器(带有密码),另一个用于客户端。

b)将服务器证书(servercert.pem)放置在Advantage Database Server所在的文件夹中,并将以下条目添加到注册表中:

" TLS_KEY_FILE" =" servercert.pem"
" TLS_KEY_PASSWORD" =" xxxxx"
" RECEIVE_TLS_PORT" = dword:00001877

重新启动ads_cfg.exe并通过netstats -a确认服务器正在侦听端口6262和6263:

TCP 0.0.0.0:6262 Server7:0侦听
TCP 0.0.0.0:6263 Server7:0侦听

c)将客户端证书(clientcert.pem)复制到可执行文件所在的文件夹中。

请注意,我们已经使用AES256加密创建了.add,并启用了ADS_DD_ENCRYPT_COMMUNICATION标志。 相应的SSL dll(libeay32.dll和ssleay32.dll)位于Window \ SysWOW64(32位版本)中,而64位版本也位于ads_cfg.exe,ads.exe所在的位置。

d)启动我们的应用程序,该应用程序调用adConnect101()并传递以下连接字符串(pwd和url已替换为伪文本):

数据源=" C:\ develop \ v23 \ sample \ abacus.add"; ServerType = 2; 用户ID =" ABASYS"; 密码=" abc"; Shared = TRUE; DDPassword =" xyz"; CommType = TLS; TLSCertificate =" C:\ develop \ v23 \ Programs \ clientcert.pem"; TLSCommonName = www.abc.com ;

这是我们因错误而停在轨道上的地方:

错误6326:OpenSSL库中发生错误。 OpenSSL错误:5,套接字错误:0

如果我编辑ads.ini(位于我们的exe文件所在的位置,c:\ develop \ v23 \ programs)并设置LAN_PORT = 6263(而不是默认的6262),则会收到错误6097(我已添加规则) 进入Windows防火墙,以允许TCP,UDP用于6262和6263端口,甚至暂时禁用防火墙,但是任何错误都会持续存在。

如果.add未加密或使用aes256加密,则不会有任何问题; 仅当我们尝试为后者进行TLS通信加密时。

在这个阶段,我不知道还有什么遗漏:

+其他SSL库?

+是在服务器端还是在客户端,还是在这两者上都是其他配置?

任何指导都将不胜感激。

付费偷看设置
发送
3条回答
Cikesha
1楼-- · 2020-09-22 10:49

Hakan:

我确实碰到了KBA在研究这个问题。 我希望实现TLS_PORT,但我想从来没有实现。

我将LAN_PORT更改为6263,但是错误697代替了错误6326。

最终,解决方案是在搜索路径中找到所有ads.ini文件(为了安全起见),找到[服务器名]并将
LAN_PORT设置为0。这样,我们就可以打开 使用TLS的.add,没有更多错误。

过去,我们的应用程序使用[servername]部分以及LAN_IP和LAN_PORT关键字创建ads.ini来解决发现问题。 现在,对于那些想要升级到加密数据库+通信加密的客户端来说,事情变得复杂了。

除了必须找出ads.ini并进行修复之外,还有其他更好的方法来解决此问题吗? 遗憾的是,TLS_PORT解决方案尚未实现。

此致

Luis。

Bunny_CDM
2楼-- · 2020-09-22 10:58

Hello Luis,

像此 KBA 该问题似乎与通信问题有关。

最好是启动网络嗅探并检查通信数据包到底发生了什么 。 也许这会带您正确解决问题的方向。

最好的问候,
Hakan

DafaDDDa
3楼-- · 2020-09-22 10:48

Hakan:

是否可以通过ads.ini或elswhere来指定lan_port和tls_port?

尽管设置LAN_PORT = 0可以解决此问题,但是我们仍有一些客户端仍然出现错误6420,因此该解决方案似乎只能在大多数情况下起作用,而不能普遍使用。

谢谢。

一周热门 更多>