कहें कि मैं https://golang.org
प्रोग्रामेटिक रूप से प्राप्त करना चाहता हूं। वर्तमान में golang.org (एसएसएल) एक बुरा प्रमाण पत्र तो जब मैं चलाने के जो *.appspot.com
को जारी किया जाता है यह:गोलांग: खराब प्रमाणपत्र के साथ https अनुरोध कैसे करें?
package main
import (
"log"
"net/http"
)
func main() {
_, err := http.Get("https://golang.org/")
if err != nil {
log.Fatal(err)
}
}
मैं (के रूप में मैं उम्मीद)
Get https://golang.org/: certificate is valid for *.appspot.com, *.*.appspot.com, appspot.com, not golang.org
अब, मैं इस पर विश्वास करना चाहते प्रमाण पत्र स्वयं (एक स्व-जारी प्रमाण पत्र की कल्पना करें जहां मैं फिंगरप्रिंट इत्यादि को मान्य कर सकता हूं): मैं कैसे अनुरोध कर सकता हूं और प्रमाण पत्र को प्रमाणित/भरोसा कर सकता हूं?
मुझे शायद प्रमाणपत्र डाउनलोड करने के लिए openssl का उपयोग करने की आवश्यकता है, इसे अपनी फ़ाइल में लोड करें और tls.Config
संरचना भरें!
यह एक "खराब प्रमाण पत्र" नहीं है, यह एक अलग सीएन के साथ एक प्रमाण पत्र है। InsecureSkipVerify यहां एक वैध उपयोग नहीं है। आपको सर्वर नाम को टीएलएस में सेट करना होगा।आप जो कनेक्ट करने का प्रयास कर रहे हैं उससे मेल खाने के लिए कॉन्फ़िगर करें। यह स्टैक ओवरफ्लो पोस्ट हर जगह फैलाने के लिए गो कोड में इस बड़े सुरक्षा छेद का कारण बन रहा है। InsecureSkipVerify प्रमाण पत्र की जांच नहीं करता है। आप जो चाहते हैं उसे सत्यापित करना है कि प्रमाण पत्र वैध रूप से किसी विश्वसनीय इकाई द्वारा हस्ताक्षरित किया गया था, भले ही सीएन होस्टनाम से मेल नहीं खाता हो। सुरंगों और एनएटीएस वैध रूप से इसे मेल नहीं कर सकते हैं। – Rob