2015-06-05 14 views
12

के साथ साइट तक पहुंचने के लिए पायथन का उपयोग करें मेरे पास ऐसी साइट है जिसमें पीकेआई सुरक्षा सक्षम है। प्रत्येक ग्राहक ने अपने प्रमाणपत्र को लोड करने के लिए या तो कार्ड रीडर का उपयोग किया है, या प्रमाण पत्र आईई प्रमाणपत्र भंडारण में उनके बॉक्स पर स्थापित है।पीकेआई सुरक्षा

तो मेरे सवाल कर रहे हैं:

  1. मैं या तो कार्ड रीडर प्रमाण पत्र या प्रमाण पत्र प्रणाली प्रणाली को सत्यापित करने पर संग्रहीत का उपयोग कैसे कर सकते हैं?
  2. मैं कहने के लिए साइट पर प्रमाण-पत्र कैसे पास करूं, हे, मैं हूं और मैं सेवा तक पहुंच सकता हूं? वे उदाहरण सॉफ्ट प्रमाणपत्र का उपयोग कर सकते हैं। मैं बाद में कार्ड रीडर भाग को समझ सकता हूं।

मैं चारों ओर खोज कर रहा हूं, और मैं इस स्थिति में मेरी सहायता करने के लिए कुछ भी नहीं आया हूं। Django मॉड्यूल का एक गुच्छा है, लेकिन यह एक विकल्प नहीं है क्योंकि मैं केवल चीजों के ग्राहक पक्ष से चिंतित हूं। मैं सेवा होस्ट करने के लिए कोई साइट नहीं बना रहा हूं। मुझे इन सेवाओं तक पहुंचने की ज़रूरत है।

मेरे पास यह कोड काम कर रहा है। मैं बस कैसे रीडायरेक्ट को संभालने के लिए मैं हो रही है पता नहीं:

import httplib 
KEYFILE = r"C:\cert\my.key" 
CERTFILE = r"c:\cert\my.pem" 
HOSTNAME = 'machine.com' 

conn = httplib.HTTPSConnection(
    HOSTNAME, 
    key_file = KEYFILE, 
    cert_file = CERTFILE 
) 

conn.putrequest('GET', '/arcgis/sharing/rest?f=json') 
conn.endheaders() 
response = conn.getresponse() 
print response.read() 

इस सब का परिणाम है:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>302 Found</title> 
</head><body> 
<h1>Found</h1> 
<p>The document has moved <a href="https://machine.com/pki?https://machine.com/arcgis/sharing/rest%3f&amp;f=json">here</a>.</p> 
</body></html> 

किसी भी प्रदान की गई सहायता बहुत अच्छा होगा!

सॉफ्टवेयर चश्मा: अजगर 2.7.8, विंडोज 2012 आर 2

+0

क्या आप अभी तक जो प्रयास कर चुके हैं उसके बारे में कुछ साझा कर सकते हैं? पल के लिए # 1 (प्रमाण पत्र प्राप्त करना) पर पंसद करते हुए, "पीकेआई ऑथ" का अर्थ है "क्लाइंट सर्टिफिकेट ऑथ", मेरा मानना ​​है कि # 2 पुस्तकालयों में बेक्ड है जो https/ssl/tls को लपेटता है। उदाहरण के लिए, अनुरोधों में, 'request.get (url, cert = (' path/to/cert ',' path/to/key '))' (क्षमा करें - उत्तर के रूप में पोस्ट करने का मतलब नहीं था) – bimsapi

+0

यह ऐसा लगता है कि आप "पीकेआई" कह रहे हैं वास्तव में "क्लाइंट सर्टिफिकेट प्रमाणीकरण" (पीकेआई उस से एक व्यापक क्षेत्र है, और आम तौर पर सर्वर प्रमाण पत्र सत्यापित करना शामिल है)। क्या आपको पता है कि आपका कार्ड रीडर पीकेसीएस # 11 ड्राइवर प्रदान करता है, या यह सिर्फ विंडोज एपीआई है? – Bruno

+0

क्या आप पाइथन में किसी भी विशिष्ट पुस्तकालयों का उपयोग करने की योजना बना रहे हैं? – Bruno

उत्तर

3

मैं एक PKI हैंडलर तो मैं यह urllib2 पुस्तकालय काम का उपयोग कर सकते अनुरोधों को हैंडल करने के लिए बनाया का प्रयास करें।

import httplib, urllib2 

class HTTPSClientAuthHandler(urllib2.HTTPSHandler): 

    def __init__(self, key, cert): 
     urllib2.HTTPSHandler.__init__(self) 
     self.key = key 
     self.cert = cert 
    def https_open(self, req): 
     #Rather than pass in a reference to a connection class, we pass in 
     # a reference to a function which, for all intents and purposes, 
     # will behave as a constructor 
     return self.do_open(self.getConnection, req) 
    def getConnection(self, host, timeout=300): 
     return httplib.HTTPSConnection(host, 
              key_file=self.key, 
              cert_file=self.cert, 
              timeout=timeout) 

इसका उपयोग करने के लिए, आपको हैंडलर के साथ एक कुकीजर का उपयोग करने की आवश्यकता होगी।

from cookielib import CookieJar 
cookiejar = CookieJay() 
handlers = [] 
handlers.append(HTTPSClientAuthHandler(somekey, somecert)) 
handlers.append(urllib2.HTTPCookieProcessor(cookiejar)) 
opener = urllib2.build_opener(*handlers) 
... do other urllib2 calls .... 

आशा है कि इससे सभी की मदद मिलती है!

1

इस कोड

#!/usr/bin/env python 

import httplib 

CERTFILE = '/home/robr/mycert' 
HOSTNAME = 'localhost' 

conn = httplib.HTTPSConnection(
    HOSTNAME, 
    key_file = CERTFILE, 
    cert_file = CERTFILE 
) 
conn.putrequest('GET', '/ssltest/') 
conn.endheaders() 
response = conn.getresponse() 
print response.read() 
+0

इस उत्तर के लिए धन्यवाद। क्या प्रेजिडप्लिब रीडायरेक्ट संभाल सकता है? –

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