2012-03-13 7 views
5

मैं डिजिटल हस्ताक्षर के बारे में कुछ पूछना चाहता हूं, मुझे पूरा यकीन नहीं है। कुछ (पीडीएफ) फ़ाइलों पर हस्ताक्षर करने के लिए उपयोग करने के लिए स्वयं हस्ताक्षरित प्रमाण पत्र बनाने के बजाय, मैं अपना एसएसएल प्रमाण लेना चाहता था जिसमें मेरा डेटा पहले ही सत्यापित हो।क्या SSL प्रमाणपत्र डिजिटल रूप से फ़ाइलों पर हस्ताक्षर करने के लिए उपयोग किया जा सकता है?

लेकिन सवाल यह है: एक एसएसएल डिजिटल हस्ताक्षर फ़ाइलों के लिए इस्तेमाल किया जा सकता है CERT या इसे किसी तरह से असंगत है?

संपादित करें: स्पष्ट करने के लिए, इस सवाल यह है कि पीडीएफ़ हस्ताक्षर करने के लिए के बारे में नहीं है, है केवल बारे में एसएसएल प्रमाणपत्र का इस्तेमाल किया है, तो जा सकता है (या किसी भी तरह से परिवर्तित) फ़ाइलों पर हस्ताक्षर करने के।

उत्तर

4

डिजिटल हस्ताक्षर प्रमाण पत्र का समर्थन करने के digitalSignature विकल्प होना चाहिए।

हस्ताक्षर मौजूदा उपकरण या मैन्युअल रूप से (जावा उदाहरण के लिए, आप इसके लिए नहीं कह रहे हैं, लेकिन इस कोड स्निपेट वैसे भी उपयोगी हो सकता है) के साथ किया जा सकता है:

byte[] bytesToSign = loadMyData(); 
KeyStore ks = KeyStore.getInstance("pkcs12", "SunJSSE"); 
ks.load(new FileInputStream("cert.p12"), "passwd1".toCharArray()); 
PrivateKey privateKey = (PrivateKey) ks.getKey("myalias", "passwd2".toCharArray()); 
Signature sig = Signature.getInstance("SHA1withRSA", ks.getProvider()); 
sig.initSign(privateKey); 
sig.update(bytesToSign); 
byte[] signature = sig.sign(); 

अपनी खुद की नहीं स्व-हस्ताक्षरित प्रमाणपत्र बनाने के लिए openssl के साथ this SO answer देखें।

इसके अलावा पीडीएफ पर हस्ताक्षर करने के बारे में उत्सुक - अपने मामले में इन फ़ाइलों के लिए पर्याप्त की अलग हैश रकम नहीं हैं?

संपादित करें: अगर आप किसी भी संकेत है, वास्तव में नहीं मौजूदा उपकरणों के द्वारा 509 संकेत चाहते हैं, तो आप अपने प्रमाणपत्र से RSA कुंजी निकाल सकते हैं और keyUsage के बारे में क्षेत्र परेशान कर के बिना पर हस्ताक्षर करते हैं।

+0

मैं पीडीएफ के रूप में चालानों के बारे में बात कर रहा हूं, और उनके पास कानूनी वैधता रखने के लिए डिजिटल हस्ताक्षर किए जाने की आवश्यकता है। फिर, इस मामले में एक साधारण राशि पर्याप्त नहीं है। – StormByte

+0

मुझे पहले से ही पता है कि मैं इस उद्देश्य के लिए आसानी से स्वयं हस्ताक्षरित कुंजी बना सकता हूं, लेकिन अगर मैं ऐसा करता हूं तो मेरे ग्राहकों को प्राप्त होने वाली किसी भी चेतावनी से बचना चाहता था। – StormByte

1

मूल में, प्रमाण पत्र सिर्फ एक सामान्य RSA सार्वजनिक कुंजी है कि कई अधिकारियों द्वारा हस्ताक्षरित किया गया है है।

तो हाँ, निश्चित रूप से संभव है।

हालांकि मैं इस बात के लिए अंत उपयोगकर्ता के लिए किसी भी आसान से उपयोग बड़े पैमाने पर उपकरणों की पता नहीं है। यह keyUsage क्षेत्र (और codeSigning विकल्प में यह extendedKeyUsage क्षेत्र है कि अगर आपके अभाव इसके साथ कार्यक्रमों पर हस्ताक्षर करने के) है में

+0

धन्यवाद, कि क्या मैं जानना चाहता था। क्योंकि अगर चीजों पर हस्ताक्षर करने के लिए इसे openssl द्वारा नियंत्रित किया जा सकता है, तो यह काम करेगा। – StormByte

+1

अधिक जानकारी के लिए alx3apps उत्तर देखें। आप इसे कर सकते हैं, लेकिन जब तक आपके पास keyUsage में डिजिटल सिग्नेचर विकल्प नहीं है, (या कोड कोड करने के लिए कोड सिग्नलिंग), हस्ताक्षर अन्य कार्यान्वयन द्वारा अस्वीकार कर दिया जा सकता है। – mfanto

1

हाँ, आप पर हस्ताक्षर और SSL प्रमाणपत्र

यहाँ का उपयोग करके फ़ाइलें के हस्ताक्षर सत्यापित कर सकते हैं एक उदाहरण है:

SSLCERT='/XXXX/ssl/certs/fqdn.pem' 
SSLKEY='/XXXX/ssl/private_keys/fqdn.pem' 
# You might not need to specify a CA 
CACERTFILE='/XXXX/ssl/certs/ca.pem' 
# File to sign 
FILE='YYYYYYY' 

# Signs, needs ${SSLKEY} and ${FILE} 
openssl dgst -sha512 -sign ${SSLKEY} -out ${FILE}.sha512 ${FILE} 

# Then transfer the following files to another server: 
# - ${CACERTFILE} 
# - ${SSLCERT} 
# - ${FILE} 
# - ${FILE}.sha512 

# Check the certificate is valid 
openssl verify -verbose -CAfile ${CACERTFILE} ${SSLCERT} 
# Extract the pub key from the cert 
openssl x509 -in ${SSLCERT} -pubkey -noout > ${SSLCERT}.pub 
# Check the signature 
openssl dgst -sha512 -verify ${SSLCERT}.pub -signature ${FILE}.sha512 ${FILE} 
संबंधित मुद्दे

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