मैं एक गो टीसीपी सर्वर (http/s नहीं) बना रहा हूं और मैं SSL का उपयोग करने के लिए इसे कॉन्फ़िगर करने की कोशिश कर रहा हूं। मेरे पास एक StartCom मुफ्त SSL प्रमाणपत्र है जिसे मैं इसे पूरा करने के लिए उपयोग करने का प्रयास कर रहा हूं। मेरे सर्वर कोड इस तरह दिखता है:गोलांग एसएसएल टीसीपी सॉकेट प्रमाणपत्र कॉन्फ़िगरेशन
cert, err := tls.LoadX509KeyPair("example.com.pem", "example.com.key")
if err != nil {
fmt.Println("Error loading certificate. ",err)
}
trustCert, err := ioutil.ReadFile("sub.class1.server.ca.pem")
if err != nil {
fmt.Println("Error loading trust certificate. ",err)
}
validationCert, err := ioutil.ReadFile("ca.pem")
if err != nil {
fmt.Println("Error loading validation certificate. ",err)
}
certs := x509.NewCertPool()
if !certs.AppendCertsFromPEM(validationCert) {
fmt.Println("Error installing validation certificate.")
}
if !certs.AppendCertsFromPEM(trustCert) {
fmt.Println("Error installing trust certificate.")
}
sslConfig := tls.Config{RootCAs: certs,Certificates: []tls.Certificate{cert}}
service := ":5555"
tcpAddr, error := net.ResolveTCPAddr("tcp", service)
if error != nil {
fmt.Println("Error: Could not resolve address")
} else {
netListen, error := tls.Listen(tcpAddr.Network(), tcpAddr.String(), &sslConfig)
if error != nil {
fmt.Println(error)
} else {
defer netListen.Close()
for {
fmt.Println("Waiting for clients")
connection, error := netListen.Accept()
मैं प्रमाणपत्र, कुछ प्रमाणपत्र, आदि लेकिन openssl s_client -CApath /etc/ssl/certs/ -connect localhost:5555
से उत्पादन सहित नहीं के आदेश के आसपास स्विचन की कोशिश की है अनिवार्य रूप से एक ही रहता है, verify error:num=20:unable to get local issuer certificate
। पूर्ण आउटपुट के लिए here देखें। ऐसा लगता है कि मैं मध्यवर्ती प्रमाणपत्रों में कुछ गलत कर रहा हूं, लेकिन मुझे नहीं पता कि क्या। मैं कुछ दिनों के लिए इस पर काम कर रहा हूं, बहुत सारे गुगलिंग और सोइंग, लेकिन मेरी स्थिति में काफी कुछ नहीं लग रहा था। मैंने अपाचे और हैप्रोक्सी में कई प्रमाणपत्र स्थापित किए हैं, लेकिन यह वास्तव में मुझे स्टंप कर दिया गया है।
अपने त्रुटि मान के रूप में 'त्रुटि' का उपयोग न करें, क्योंकि यह अंतर्निहित इंटरफ़ेस नाम मास्क करता है। – JimB
धन्यवाद, मैं इसे सही कर दूंगा! –