首页 文章

Apache CURL错误SSL:CA证书集,但禁用证书验证

提问于
浏览
1

问题:我的开发环境正在创建此错误,我提交的是使用CURL的登录表单 . CURL产生此错误,我认为该错误与为SSL连接生成的证书相关联 .

My dev environment is:

  • Mac OS X Capitan 10.11

  • Apache 2.4 / PHP 7.0.12

phpinfo() states:

  • cURL:启用/ 7.50.3 / SSL:是/协议:dict,file,ftp,ftps,gopher,http,https,imap,imaps,ldap,ldaps,pop3,pop3s,rtsp,scp,sftp,smb,smbs ,smtp,smtps,telnet,tftp / SSL版本:SecureTransport / ZLib版本:1.2.5 / libSSH版本:libssh2 / 1.4.3

  • OpenSSL:启用/库版本:OpenSSL 1.0.2h 2016年5月3日/ Headers 版本:OpenSSL 1.0.2h 2016年5月3日/ openssl.cafile :(本地)/usr/local/php5/ssl/certs/cacert.pem和(主人)/usr/local/php5/ssl/certs/cacert.pem

为了创建SSL设置,我在这篇文章之后发布了一个消除浏览器请求的tee,并允许我提取涉及Twitter等需要SSL连接的项目的请求,即使在开发环境中也是如此 .

但是,PHP 5.6 . 我最初用于开发这个特定的项目,并且最近我升级到7,现在已经导致了这个错误 .

在测试证书方面,终端显示错误如下:

echo | openssl s_client -connect localhost:443

上面的命令产生了:

CONNECTED(00000003)
depth=0 C = AU, ST = New South Wales, L = Sydney, O = localhost, CN = localhost
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = AU, ST = New South Wales, L = Sydney, O = localhost, CN = localhost
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/C=AU/ST=New South Wales/L=Sydney/O=localhost/CN=localhost
   i:/C=AU/ST=New South Wales/L=Sydney/O=localhost/CN=localhost
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDgDCCAmigAwIBAgIJAIqaBKmBWQOqMA0GCSqGSIb3DQEBCwUAMGAxCzAJBgNV
BAYTAkFVMRgwFgYDVQQIDA9OZXcgU291dGggV2FsZXMxDzANBgNVBAcMBlN5ZG5l
eTESMBAGA1UECgwJbG9jYWxob3N0MRIwEAYDVQQDDAlsb2NhbGhvc3QwHhcNMTYx
MTAyMjEzODQ3WhcNMTcxMTAyMjEzODQ3WjBgMQswCQYDVQQGEwJBVTEYMBYGA1UE
CAwPTmV3IFNvdXRoIFdhbGVzMQ8wDQYDVQQHDAZTeWRuZXkxEjAQBgNVBAoMCWxv
Y2FsaG9zdDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAmD67Hq/iOUL+b+cjgeO/xwfjmkAu2QI4ZbOV4w/pH66T+U9a
KN3snz504u8xo1DUDKyUp+eX40q2jbWghzOoPVrhIRWwhY4woyX6FYILzvNDym59
Hqc9CzGZ6lkuApelsSAFyC2Q0K7VeOFwEepNZ6ou7WhqfoS9N/CPptut/+NkByxt
m8sEvFbLS4dtVKHB8QoPsVJ8w7f+4zKk3NjVLQPlw8xxzLMStzlwsOSLJYEaiU1a
fdzOoe/l0DroMpTZmDPth6/Fc9loCC3AcgIrzOG7q9eaR5ANNA1+Ca/4/3+qdQOU
CVYjFwwTsTZdcd73nHVjJCe/3bX30T3s9dTD/QIDAQABoz0wOzAJBgNVHRMEAjAA
MAsGA1UdDwQEAwIF4DAhBgNVHREEGjAYgglsb2NhbGhvc3SCCyoubG9jYWxob3N0
MA0GCSqGSIb3DQEBCwUAA4IBAQB9Z5cbIq6gGQ7xg22AxUUQ2GUQ+/u2heHogphP
S/k2OmPg2mmtZ6UPS2B8m8TRx6roHZhO6pWGuDh0BuwRMHC0kYMB7p+XFiOl9Xo+
EVpiM4oXHJ7f1JgF0k/77MGIcyWBHfkvEzNcmhdmabyV5cdyXJs4IaJqnnczwjgC
jh2kvPL4mYQ6Tq26j+vWU2BklFTeMEjr3MgEL+prBTCx6DJ+vKDW3h9USm2yHMGa
EWiP+tJ+6vXKzHdpAVjTNYsoR9stfduZylG9m5pZSISOlaZnDDEwyiQ33U15FAM4
ZnfDOJX1Tbb0MpdbjH36QS2uBhUebxEM361BVGXPZQUaCqp2
-----END CERTIFICATE-----
subject=/C=AU/ST=New South Wales/L=Sydney/O=localhost/CN=localhost
issuer=/C=AU/ST=New South Wales/L=Sydney/O=localhost/CN=localhost
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, B-571, 570 bits
---
SSL handshake has read 1666 bytes and written 513 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 8B39BE1C255BDD6ED6E42E85612AB24C9CD1CB2195676A2CAEA7E3FAE0E65D68
    Session-ID-ctx: 
    Master-Key: 86DCCE7468DE39C619A64AC7C08E6F3AA55B02DC025564D4E67C7BCDDE90415D518D780FB4EEB98A69DF785ED62FFB09
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - e0 da 63 c7 3d b0 eb 5c-0b 30 c8 0f 8f 43 b2 5e   ..c.=..\.0...C.^
    0010 - 93 49 cb 87 c5 f8 a5 f4-42 bf 19 e1 16 3d 24 73   .I......B....=$s
    0020 - ab 0a 76 b9 a7 84 1b 1b-ad 3f 4b 2d 60 c7 0c 8a   ..v......?K-`...
    0030 - 3d e8 0d b2 29 db 95 b0-a6 e6 49 f6 60 3c fe 1d   =...).....I.`<..
    0040 - c2 f5 51 8f 40 ae 93 ac-f2 eb b9 99 2c c5 f0 45   ..Q.@.......,..E
    0050 - bb d7 16 a7 0f a5 52 c7-c4 b8 e4 6a 05 ab a0 25   ......R....j...%
    0060 - 9c 44 dc 15 8c 0e cf 69-18 f8 dd 8d f1 ad 21 32   .D.....i......!2
    0070 - f5 f9 d6 54 37 87 46 6d-9e 4f d2 8a 3e 16 e2 1a   ...T7.Fm.O..>...
    0080 - 41 1a 26 27 31 83 f1 ad-31 26 ab 22 17 84 50 ae   A.&'1...1&."..P.
    0090 - 06 ef 51 9e f4 40 0f 48-8b a9 66 26 1f d8 32 88   ..Q..@.H..f&..2.
    00a0 - 46 19 a2 97 44 26 9c b1-b0 15 5c 0b 02 d7 23 ea   F...D&....\...#.
    00b0 - 07 b6 72 57 b7 47 ee 9a-85 fe 16 d4 59 8d b8 34   ..rW.G......Y..4

    Start Time: 1478128414
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---
DONE

对于产生此错误的登录页面,我使用的是Auth0.com,我拒绝更改CURL请求verifypeer = false以抑制此错误,因为错误清楚地表明泄漏 . 作为开发人员,我们希望尽可能地复制我们的开发环境,以确保在转向 生产环境 时不会遗漏任何东西 .

谢谢,希望我已经涵盖了这里所需的一切 . 我不使用外部软件包,如MAMP或XAMPP等,只是将PHP7安装作为Capitan附带的现有PHP 5.5的升级 .

干杯!

2 回答

  • 1

    找到一种方法来切换你的 curl 代码,这样如果你在dev ($_SERVER['HTTP_HOST']=='localhost') 然后你设置了 verifypeer = false 但是没有设置并且仍然适用于 生产环境 .

  • 0

    经过无数个小时的测试,配置,重新安装和拔毛后,我终于找到了答案 .

    对于遇到此错误的每个人,我发现最终结果是PHP安装 . 起初我以为是Auth0不遵守Apple的SecureTransport的SSL版本,但事实并非如此 .

    我使用cURL将PHP升级到本机目录,在配置文件中更改$ PATH变量,为phpinfo()更改LaunchAgents等,以显示我使用的是更新的PHP版本但是模块实际上与之前的版本相关,并且发现PHP安装了查看导致此错误的自己的目录(它根本与证书无关) .

    我将PHP版本回滚到5.5,同时保留了SecureTransport SSL版本,并且cURL请求完全正常 . 我现在终于解决了这个问题,这个问题在我的本地主机环境中是孤立的,并且很乐意分享我在这里为其他有类似问题的人所做的事情 .

    我按照本指南清理了所有安装和Homebrewed所有版本的PHP及其自己的Apache:macOS 10.12 Sierra Apache Setup: Multiple PHP Versions Homebrew允许您安装应用程序,例如主OS目录之外的完整Web环境,因此不会对其标准安装造成影响 .

    我使用的是Capitan,这个指南仍然没有错误 . 现在我使用的是使用OpenSSL作为默认SSL版本的PHP 7.1.0RC5,我不再收到此错误 . 我已经在其他PHP安装5.5,5.6,70和71上测试了Auth0而没有错误 .

    欢呼声,如果您遇到此问题,请查看您的安装,清理并重新安装,如果正确完成默认安装将阻止显示此特定错误 .

    如果有帮助,可以找到上述指南的新链接:macOS 10.12 Sierra Apache Setup: Multiple PHP Versions

    请注意我不是上述页面的所有者,我仅将其用作指南 .

相关问题