安全套接字层(SSL)失败? [OE101C]

时间:2015-02-03 18:02:01

标签: progress-4gl openedge

我有一个通过套接字/ https使用Web服务的进程。使用套接字时,我的代码突然出错。我猜它与进度内部证书管理器有关。

这些是正在发生的错误。

---------------------------
Error
---------------------------
Secure Socket Layer (SSL) failure. error code -54:  certificate signature failure: for b0f3e76e.0 in n:\progra~1\oe101c\certs (9318)
---------------------------
Error
---------------------------
Connection failure for host api.constantcontact.com port 443 transport TCP. (9407)
---------------------------
Error
---------------------------
Invalid socket object used in WRITE method. (9178)

然后我决定从我正在使用的服务网站获取Cert Chain。我运行此命令来获取此信息。

openssl s_client -connect api.constantcontact.com:443 -showcerts > certs.out

获得证书后,我将每个证书提取到自己的文件中,并将它们平铺为cert1.cer,cert2.cer和cert3.cer。我用certutil注册了它们,错误仍在发生。

然后我使用此命令转换了所有这三个。

openssl x509 -in cert1.cer -out cert1.pem -outform PEM

然后尝试再次注册它们仍然没有解决方案。

我用proenv这样注册了它们。

certutil -import cert1.pem

他们正确导入但我仍然收到此错误。有什么东西我缺少或者这可能是完全不同的东西。在原始错误中,哈希b0f3e76e.0实际上是由第3个证书生成的。我试图删除certs文件夹中的哈希值并重新生成它。在这一点上我完全无能为力。该应用已经工作了一段时间,我记得过去有这个问题,但不记得是什么修复它。好像当有人从虚拟驱动器更改为物理驱动器时,在此错误上安装了进度,开始重新弹出。

由于

4 个答案:

答案 0 :(得分:1)

抱歉,我很想念。你可以谷歌b0f3e76e.0并尝试找到它的rootCA。然后复制它的内容并在其上使用certutil -import,看看它是否适合你。

例如:

网址https://alphassl.com.ua/support/root.pem

将其复制并粘贴到记事本中。将其另存为rootCA.pem

使用certutil -import rootCa.pem。这将为您提供ABL程序正在寻找的证书,以便与您用于ssl套接字连接的服务器握手。

再次抱歉误解。

答案 1 :(得分:1)

服务器端可能已更改证书。您可能希望使用从服务器重新导入证书 openssl s_client -connect api.constantcontact.com:443 -showcerts> certs.out

然后在导入之后,查看您收到错误的哈希格式文件。你可以google它并找到证书并再次使用certutil -import来获取特定的哈希格式证书。

我曾经历过这类问题之前,他们所有人都在改变可以拥有连锁证书的证书。还可以从不同的证书颁发机构生成自己的公司名称。

答案 2 :(得分:1)

也可能是证书已过期。我只是查看了我提到的URL上的rootCA,有效期已过期。

有效期             不是之前:9月1日12:00:00 GMT             不是之后:2014年1月28日12:00:00 GMT

您需要找到一个有效期到期的人。

答案 3 :(得分:1)

此解决方案位于C:\ Progress \ OpenEdge中的startup.pf中,编辑并添加到最后一行-sslverify 0 ...

例如

-cpinternal ISO8859-1 -cpstream ISO8859-1 -cpcoll Spanish9 -cpcase Basic -d dmy -numsep 44 -numdec 46 -sslverify 0