अनुमति दें HTTPS के लिए स्व-हस्ताक्षरित प्रमाण पत्र मूल रूप से मैं इस है:आवरण
function request($url) {
return file_get_contents($url, false, stream_context_create(array(
"ssl" => array(
"verify_peer" => true,
"allow_self_signed" => false,
)
)));
}
request("https://[A]");
request("https://[B]");
कहाँ [एक] एक 'असली' प्रमाण पत्र और [बी] के साथ ही एक से एक पर कुछ है के साथ एक सर्वर पर कुछ यूआरएल है स्वयं हस्ताक्षरित प्रमाणपत्र।
[एक] यह ठीक काम करता है, के साथ [बी] मैं इस मिल के साथ:
file_get_contents(): Failed to enable crypto
कौन सा ऐसा "सर्वर प्रमाणपत्र सत्यापन विफल" कुछ है, लेकिन ठीक किया जाना चाहिए था एक नहीं बल्कि दुर्भाग्यपूर्ण त्रुटि संदेश है। ..
अब मैंने सोचा: "ठीक है, [बी] अपने परीक्षण प्रणाली है - मैं प्रमाण पत्र के लिए परवाह नहीं है" और इस में संदर्भ बदल दिया है:
"verify_peer" => false,
"allow_self_signed" => true,
यह should अब एक स्वीकार एनई सर्वर प्रमाण पत्र, यहां तक कि मेरे स्वयं ने हस्ताक्षर किए। लेकिन यह अभी भी वही व्यवहार है - [ए] काम करता है, [बी] नहीं करता है। क्यूं कर?
बीटीडब्ल्यू: मुझे पता है कि यह कर्ल एक्सटेंशन के साथ अच्छी तरह से काम करता है, लेकिन मैं इसके बिना इसे हरा देना चाहता हूं।
कृपया परिभाषित करें * "[ए] के साथ यह ठीक काम करता है" * ... क्योंकि उनमें से किसी भी ने कभी काम नहीं करना चाहिए। आपने PHP को बताने के लिए "कैफीइल" या "कैपथ" निर्दिष्ट नहीं किया है जो सीए केर्ट्स का उपयोग करना है सहकर्मी सत्यापन के लिए और आपने स्वयं हस्ताक्षरित प्रमाणपत्रों को अस्वीकार कर दिया है। न तो [ए] न ही [बी] सफलतापूर्वक कनेक्ट हो सकता है यदि आप वास्तव में यहां दिखाए गए सटीक कोड का उपयोग कर रहे हैं। – rdlowrey