2016-03-22 8 views
6

अपने नेटवर्क सुरक्षा विन्यास के लिए एन डेवलपर पूर्वावलोकन में प्रलेखन इन निर्देशों प्रदान करता है:हम एंड्रॉइड एन सर्टिफिकेट पिनिंग के लिए X.50 9 सर्टिफिकेट के SubjectPublicKeyInfo के बेस 64-एनकोडेड SHA256 हैश कैसे उत्पन्न करते हैं?

प्रमाणपत्र पिन करने का सार्वजनिक कुंजी (X.509 प्रमाणपत्र की SubjectPublicKeyInfo) के हैश द्वारा प्रमाण पत्र का एक सेट उपलब्ध कराने के द्वारा किया जाता है। एक सर्टिफिकेट चेन तब तभी वैध होती है जब सर्टिफिकेट चेन में कम से कम एक पिन की गई सार्वजनिक कुंजी होती है।

एक्सएमएल से उनके दिखाई देने टूटी हुई है (एक बंद टैग नहीं है), लेकिन अन्यथा पता चलता है कि हैश SHA256 और इनकोडिंग base64 है:

<?xml version="1.0" encoding="utf-8"?> 
<network-security-config> 
    <domain-config> 
     <domain includeSubdomains="true">example.com</domain> 
     <pin-set expiration="2018-01-01"> 
      <pin digest="SHA-256">7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=</pin> 
      <!-- backup pin --> 
      <pin digest="SHA-256">fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=</pin> 
    </domain-config> 
</network-security-config> 

हम इस तरह के एक हैश बना सकता हूँ?

मैंने this gist में दृष्टिकोण की कोशिश की, लेकिन openssl x509 -inform der -pubkey -noout मेरी सीआरटी फ़ाइल पसंद नहीं है। मैं आसानी से निर्धारित नहीं कर सकता कि समस्या सीआरटी फ़ाइल में है, निर्देश, openssl का मेरा संस्करण, या कुछ और।

क्या किसी के पास इस हैश बनाने के लिए कोई अच्छी नुस्खा है?

उत्तर

13

openssl x509 -in cert.crt -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

आप पहले आदेश के लिए -inform der जोड़ने के लिए है, तो cert.crt डीईआर रूप में के बजाय पीईएम रूप में है आवश्यकता हो सकती है।

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