2017-05-02 12 views
6

मुझे प्रारूप पी 12 (पीकेसीएस 12) में क्लाइंट सर्टिफिकेट फ़ाइल का उपयोग करने की आवश्यकता है, ताकि वेक्रैस के साथ वेबसर्वर से बात कर सकें, क्या ऐसा करने का कोई तरीका है?एसएसएल क्लाइंट सर्टिफिकेट (पी 12) का उपयोग कैसे करें?

उत्तर

7

मैं आपको यहां एक परीक्षण और पूरा समाधान नहीं दे सकता, लेकिन मुझे कुछ स्थानों को पता है जहां कुछ समायोजन आपको जो चाहिए वह आपको दे सकता है।

प्रारंभिक बिंदु स्कैपर की ContextFactory ऑब्जेक्ट है जो SSL/TLS कॉन्फ़िगरेशन को परिभाषित करता है। मानक कार्यान्वयन ScrapyClientContextFactory क्लाइंट प्रमाणपत्र का उपयोग नहीं करता है और कोई भी सर्वर प्रमाण पत्र सत्यापन नहीं करता है, यह केवल किसी प्रमाण पत्र को स्वीकार करता है। (More details)

source code पर ध्यान देते समय हालांकि आप वैकल्पिक BrowserLikeContextFactory विकल्प विकल्प ForClientTLS ऑब्जेक्ट देख रहे हैं।

यह ऑब्जेक्ट सर्वर को प्रमाणीकृत करने के लिए clientCertificate पैरामीटर भी ले सकता है।

@implementer(IPolicyForHTTPS) 
class ClientCertContextFactory(BrowserLikeContextFactory): 

    def creatorForNetloc(self, hostname, port): 
     with open('yourcert.pem') as keyAndCert: 
      myClientCert = twisted.internet.ssl.PrivateCertificate.load(keyAndCert.read()) 
     return optionsForClientTLS(hostname.decode("ascii"), 
            trustRoot=platformTrust(), 
            clientCertificate=myClientCert, 
            extraCertificateOptions={ 
             'method': self._ssl_method, 
            }) 

संदर्भ सक्रिय कर रहा है: (Details)

तो सिद्धांत रूप में आप BrowserLikeContextFactory उपवर्ग, तब तक आपकी लिखना creatorForNetloc विधि और यह optionsForClientTLS बनाने भी एक सार में एक clientCertificate

है बनाने की जरूरत है सेटिंग.py:

DOWNLOADER_CLIENTCONTEXTFACTORY = 'your.package.ClientCertContextFactory' 

के अनुसार

openssl pkcs12 -in client_ssl.pfx -out client_ssl.pem -clcerts 

(Converting pfx to pem using openssl से उधार)

अद्यतन PKCS12 फ़ाइलों के लिए रूपांतरण: डॉक्स twisted.internet.ssl.PrivateCertificate केवल लोड पीईएम या ASN.1 प्रारूप चाबियाँ, si आप PEM प्रारूप में अपने प्रमुख परिवर्तित करना होगा कर सकते हैं पी 12 प्रारूप में:

openssl pkcs12 -in client_cert.p12 -out client_cert.pem -clcerts 
संबंधित मुद्दे