2014-06-12 18 views
7

मैं प्रमाणीकृत सदस्यों के लिए ब्राउज़र को प्रमाण पत्र का अनुरोध करना चाहता हूं।प्रमाणीकरण के लिए क्लाइंट प्रमाणपत्र का अनुरोध

NodeJS हम http://nategood.com/nodejs-ssl-client-cert-auth-api-rest

की तरह कुछ मैं TLS के बारे में कुछ लेख पढ़ा है है, लेकिन मैं वास्तव में समझ में नहीं आता कि यह कैसे उपयोग करें ...

उत्तर

12

यहाँ कैसे ग्राहक की आवश्यकता के लिए की एक छोटी सी उदाहरण है प्रमाण पत्र। चाल उपयोगिता दिनचर्या का उपयोग करने के बजाय http.Server मैन्युअल रूप से बनाने और कॉन्फ़िगर करना है।

package main 

import (
    "crypto/tls" 
    "fmt" 
    "net/http" 
) 

func main() { 
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { 
     fmt.Fprintf(w, "Hello cert") 
    }) 

    server := &http.Server{ 
     Addr: ":8090", 
     TLSConfig: &tls.Config{ 
      ClientAuth: tls.RequireAndVerifyClientCert, 
     }, 
    } 

    server.ListenAndServeTLS("cert.pem", "cert.key") 
} 

महत्वपूर्ण हिस्सा tls.Config struct जो रास्ता सर्वर, TLS के साथ व्यवहार करेंगे नियंत्रित करते हैं। क्षेत्र ClientAuth क्लाइंट प्रमाणपत्र नीति को पकड़ें, हमारे मामले में क्लाइंट प्रमाण पत्र की आवश्यकता है और इसे सत्यापित करें। ध्यान दें कि अन्य नीतियां उपलब्ध हैं ...

आपको उसी संरचना के ClientCAs फ़ील्ड पर भी एक नज़र डालना चाहिए, जो आपको रूट सीए की एक सूची का उपयोग करने की अनुमति देता है, जिसे ग्राहक को सत्यापित करना होगा।

नोट: मुझे लगता है कि आप संचार को एन्क्रिप्ट करने के लिए प्रमाणपत्र सर्वर पक्ष का भी उपयोग कर रहे हैं। server.ListenAndServeTLS विधि अभी भी साइड-इफेक्ट के रूप में आपके लिए बहुत सारे काम करती है। यदि आपको इसकी आवश्यकता नहीं है, तो आपको मैन्युअल रूप से ऐसा करने के लिए इस method में गोता लगाने की आवश्यकता होगी (और यहां तक ​​कि निम्न-स्तरीय विधि server.Serve का उपयोग करें)।

+0

यह वही है जो मैं चाहता हूं। और मैं अपने आप को फ़ील्ड देखने के लिए प्रमाण पत्र तक कैसे पहुंच सकता हूं? – Druxtan

+0

@Druxtan आप प्रमाणपत्र का विश्लेषण करने के लिए openssl कमांड लाइन उपकरण का उपयोग कर सकते हैं, यदि आपका यही मतलब है। आप इसे गो से कर सकते हैं, लेकिन अगर ग्राहक के पास वैध प्रमाण है तो आपको इसकी आवश्यकता नहीं होनी चाहिए। – Intermernet

+1

आप इसे कर सकते हैं लेकिन यह गधे में दर्द होगा, क्योंकि यह मानक पैकेज द्वारा आंतरिक रूप से संभाला जाता है। – Elwinar

संबंधित मुद्दे