相关疑难解决方法(0)

连接到gateway.sandbox.push.apple.com时,"验证错误:num = 20"

我试图在iOS 6教程:第1/2部分中运行Apple推送通知服务中的Ray Wenderlich教程.

我在本地目录中创建了AppID和SSL证书以及密钥和PEM文件.之后,我到了测试证书是否有效的步骤,我从这个本地目录调用了以下命令:

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 
-cert PushChatCert.pem -key PushChatKey.pem
Run Code Online (Sandbox Code Playgroud)

这产生了很多输出.在输出的中间是以下内容:

verify error:num=20:unable to get local issuer certificate
verify return:0
Run Code Online (Sandbox Code Playgroud)

这是一个错误,还是一个错误的测试?如果是错误,原因是什么或者您建议解决什么?


这是完整的输出(减去证书数据):

Enter pass phrase for PushChatKey.pem:    
CONNECTED(00000003)
depth=1 /C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c) 2009 Entrust, Inc./CN=Entrust Certification Authority - L1C
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=California/L=Cupertino/O=Apple Inc./OU=iTMS Engineering/CN=gateway.sandbox.push.apple.com
   i:/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c) 2009 Entrust, Inc./CN=Entrust Certification Authority - L1C
 1 s:/C=US/O=Entrust, …
Run Code Online (Sandbox Code Playgroud)

ssl openssl apple-push-notifications

62
推荐指数
1
解决办法
8万
查看次数

SSL_connect 返回=1 errno=0 state=error: 证书验证失败(无法获取本地颁发者证书)

我正在尝试从我的应用程序发布到 Web 服务,但我经常收到以下错误。

SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
Run Code Online (Sandbox Code Playgroud)

我使用compassplus发布的crt文件和我自己生成的密钥文件发送post请求。

def payment
    @booking = 12

    uri = URI("https://test.compassplus.com:8444/Exec")
    xml = Builder::XmlMarkup.new
    xml.instruct! :xml, :version => '1.0'
    xml.TKKPG {
        xml.Request {
            xml.Operation("CreateOrder")
            xml.language("EN")
            xml.Order {
                xml.OrderType("Purchase")
                xml.Merchant("123456")
                xml.Amount("10000")
                xml.Currency("840")
                xml.Description("Tour Purchase")
                xml.ApproveURL("/thankyou.html")
                xml.CancelURL("/error.html")
                xml.DeclineURL("/declined.html")
                xml.email("")
                xml.phone("")
                xml.AddParams {
                    xml.FADATA("")
                    xml.SenderPostalCode("")
                    xml.AcctType("")
                    xml.TranAddendums("")
                    xml.TranAdddendumsVISA("")
                    xml.TranAdddendumsMC("")
                    xml.TranAdddendumsAMEX("")
                    xml.TranAdddendumsJCB("")
                    xml.OrderExpirationPeriod("")
                    xml.OrigAmount("")
                    xml.OrigCurrency("")
                }
            }
        }
    }
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl  = true
    http.ssl_version = :TLSv1_2
    http.verify_mode …
Run Code Online (Sandbox Code Playgroud)

ruby openssl web-services ruby-on-rails

8
推荐指数
1
解决办法
1万
查看次数

证书续订后,Ruby Net :: HTTP响应OpenSSL :: SSL :: SSLError"证书验证失败"

我们最近更新了我们网站的SSL证书,并在Mac OS El Capitan 10.11.3上发生以下情况:

require 'net/http'

Net::HTTP.get URI('https://www.google.com')
# => "<HTML>...</HTML>"

# The site whose certificate got renewed
Net::HTTP.get URI('https://www.example.com')
# => OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed
Run Code Online (Sandbox Code Playgroud)

我在Google和StackOverflow上的所有搜索都提出了表明Ruby安装存在问题的答案,但它们似乎与较旧的Ruby版本有关,我认为这不是这种情况.这是我尝试过的:

  • brew update
  • brew upgrade openssl
  • rvm osx-ssl-certs update all
  • rvm install ruby-2.3.1 --disable-binary --with-openssl-dir="$(brew --prefix openssl)" (之前我没有这个版本)
  • rvm requirements
  • crlrefresh rpv 根据Uzbekjon的建议,清除OSX系统范围的CRL缓存.

我该如何解决这个问题?

笔记:

  • 在没有Ruby 2.2.3的新安装的Linux Docker容器上不会出现此问题.所以也许这与Mac OS或SSL本地缓存有关.
  • 证书续订之前可能存在此问题.我无法确定.但是,正如我在这个问题中讨论的那样,更新确实会导致与我们正在使用的第三方类似的问题.
  • Namecheap验证证书安装是否正确,在线检查器显示一切正常,所有主要浏览器都将证书显示为有效.

在BoraMa的帮助下,现在很清楚发生了什么.COMODO添加了一个名为COMODO RSA Certification Authority而不是之前的新根COMODO Certification Authority.新的root用户未在Mac的钥匙串中注册,导致此问题.

我们尝试调试此方法的一种方法是运行:

openssl s_client -connect www.mysite.com:443 …
Run Code Online (Sandbox Code Playgroud)

ruby ssl openssl ssl-certificate net-http

6
推荐指数
1
解决办法
4437
查看次数