SSL证书错误

时间:2013-10-13 22:30:15

标签: curl ssl ssl-certificate

我正在使用key,ca,cert in options测试对本地节点服务器的SSL访问(自签名w OpenSSL)

var server_options = {
  key: fs.readFileSync('/etc/ssl/self-signed/server.key'),
  ca: fs.readFileSync('/etc/ssl/self-signed/server.csr'),
  cert: fs.readFileSync('/etc/ssl/self-signed/server.crt')
};

尝试访问它:

curl -v --user 1234567890:abcdefghijklmnopqrstuvwxyz --data "grant_type=password&username=yves&password=123456789" https://macMini.local:8000/oauth/token

使用curl我收到以下错误:

  

卷曲:(60)SSL证书问题,验证CA证书是否正常。细节:   错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

我从http://curl.haxx.se/ca/cacert.pem下载了ca证书,并将它们添加到我的curl-ca-bundle-new.crt文件中,正如一些与curl相关的帖子中所建议的那样......但没办法

这是日志

  
      
  • 即将连接()到macMini.local端口8000(#0)
      
         
        
    • 尝试192.168.1.14 ...
    •   
    • 连接
    •   
    • 连接到macMini.local(192.168.1.14)端口8000(#0)
    •   
    • SSLv3,TLS握手,客户端问候(1):
    •   
    • SSLv3,TLS握手,服务器问候(2):
    •   
    • SSLv3,TLS握手,CERT(11):
    •   
    • SSLv3,TLS警报,服务器问候(2):
    •   
    • SSL证书问题,验证CA证书是否正常。细节:   错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败
    •   
    • 关闭连接#0   curl:(60)SSL证书问题,验证CA证书是否正常。细节:   错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败   更多详情:http://curl.haxx.se/docs/sslcerts.html
    •   
  •   

我知道我可以绕过Curl CA检查,使用:

curl -k -v --user 1234567890:abcdefghijklmnopqrstuvwxyz --data "grant_type=password&username=yves&password=123456789" https://macMini.local:8000/oauth/token

在这种情况下运行正常,我可以看到:

  

SSL证书验证结果:自签名证书(18),无论如何都在继续。

但我想知道是否有办法解决这个问题......

3 个答案:

答案 0 :(得分:6)

这是您应该添加到CA捆绑包的自签名证书。否则,curl无法知道它可以信任。

答案 1 :(得分:5)

我终于找到了OSX(10.8)上的位置:/usr/share/curl/cacert.pem 所以我将自签名证书添加到它,并重新启动了我的node-ssl服务器..

然后curl命令现在正好运行-k选项

curl -v --user 1234567890:abcdefghijklmnopqrstuvwxyz --data "grant_type=password&username=yves&password=123456789" https://macMini.local:8000/oauth/token

* About to connect() to macMini.local port 8000 (#0)
*   Trying 192.168.1.14...
* connected
* Connected to macMini.local (192.168.1.14) port 8000 (#0)
* successfully set certificate verify locations:
*   CAfile: /usr/share/curl/cacert.pem
  CApath: none
...

答案 2 :(得分:0)

在Mac上,我在尝试安装composer时收到类似的ssl相关错误。

  

错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:certificate

命令

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

但我成功通过运行命令

来安装它
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/composer/

根据指示here