问题:我的开发环境正在创建此错误,我提交的是使用CURL的登录表单。 CURL产生此错误,我认为该错误与为SSL连接生成的证书相关联。
我的开发环境是:
phpinfo()声明:
为了创建SSL设置,我将这篇Enable SSL in Apache (OSX)文章发布到了一个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的升级版。
干杯!
答案 0 :(得分:1)
找到一种方法来切换curl
代码,这样如果你在开发($_SERVER['HTTP_HOST']=='localhost')
,那么你设置verifypeer = false
但是没有设置并且仍然适用于生产。
答案 1 :(得分: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
请注意我不是上述页面的所有者,我仅将其用作指南。