我有一个通过套接字/ 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文件夹中的哈希值并重新生成它。在这一点上我完全无能为力。该应用已经工作了一段时间,我记得过去有这个问题,但不记得是什么修复它。好像当有人从虚拟驱动器更改为物理驱动器时,在此错误上安装了进度,开始重新弹出。
由于
答案 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