2009-05-26 10 views
39

मैं अपनी वेबसाइट पर जावा एप्लेट को तैनात करने की कोशिश कर रहा हूं। मुझे इसे साइन करने की भी आवश्यकता है, क्योंकि मुझे क्लिपबोर्ड तक पहुंचने की ज़रूरत है। मैंने उन सभी हस्ताक्षर ट्यूटोरियल का पालन किया है जिन्हें मैं पा सकता हूं लेकिन मुझे कोई सफलता नहीं मिली है। यहां मैंने जो किया है, वह है:ब्राउज़र में उपयोग के लिए मैं जावा एप्लेट पर कैसे हस्ताक्षर करूं?

  • नेटबीन में एक एप्लेट लिखा। यह एप्लेट दर्शक में ठीक चलाता है।
  • इसमें से एक .jar फ़ाइल बनाई गई।
  • ऐसा करने से एक प्रमाण पत्र निर्मित:
jarsigner "C:\my path\myJar.jar" myKeyName 
    012:
keytool -genkey -keyalg rsa -alias myKeyName 
keytool -export -alias myKeyName -file myCertName.crt 
  • यह wtih jarsigner इस तरह हस्ताक्षर
  • बनाया गया एक एचटीएमएल इस युक्त फ़ाइल:
<html> 
    <body> 
<applet code="my/path/name/myApplet.class" archive="../dist/myJar.jar"/> 
    </body> 
</html> 

जब मैं उस html फ़ाइल खोलते हैं, तो मैं कभी नहीं सुरक्षा पुष्टिकरण संवाद बॉक्स मिल (और इस प्रकार "java.security.AccessControlException मिलती है: पहुँच अस्वीकार "त्रुटि)। यह सभी ब्राउज़रों पर होता है।

क्या मुझे एक कदम याद आ रहा है?

उत्तर

6

शायद ऐसा इसलिए है क्योंकि आप कुछ .class फ़ाइलों को खोल रहे हैं जार फ़ाइल के बाहर?

इस तरह यह चेतावनी प्रदर्शित नहीं कर सकता है। मैंने इसे इस तरह से करने की कोशिश की लेकिन यह अभी भी मुझे प्रमाणपत्र चेतावनी दिखाता है और एक साधारण मामले के लिए यह वास्तव में मुझे अलग वर्ग के साथ जेएआर से कक्षा तक पहुंचने से रोकता है।

शायद आपका विशिष्ट सेटअप या फ़ाइल संगठन उस व्यवहार का कारण बनता है। यदि आप लेआउट कर सकते हैं कि अधिक विस्तार से हम बेहतर मदद कर सकते हैं (या बल्कि, उन सभी .class फ़ाइलों को अभी तक एक और हस्ताक्षरित जार में डालने का प्रयास करें और इसे संग्रह में जोड़ें "..., anotherJar.jar")।

+0

मैंने इसे ठीक किया। समस्या यह थी कि मेरी जार फ़ाइलों को उसी तरह संकलित नहीं किया जा रहा था जिस तरह से मैं कक्षा फाइलों का संदर्भ दे रहा था। यह अब काम करता है। धन्यवाद! – user107312

-1

संपादित करें: यह उत्तर ऐतिहासिक है। जेडीके 9 जाहिर तौर पर एप्लेट को हटा देगा। लिखने के समय (1 जनवरी 2017), आपको एप्लेट पर हस्ताक्षर करना चाहिए, लेकिन उन्हें कोई अतिरिक्त विशेषाधिकार नहीं देना चाहिए, फिर एक और वर्तमान तकनीक में संक्रमण करना चाहिए।

मेरा सुझाव है कि आप कोड पर हस्ताक्षर नहीं करते हैं। यदि आप अन्य लोगों की सुरक्षा के साथ खेल रहे हैं, तो आपको वास्तव में पता होना चाहिए कि आप क्या कर रहे हैं।

JTextComponent टेक्स्ट की कॉपी और पेस्ट की अनुमति देनी चाहिए, यदि वह पर्याप्त है।

jarsigner -verify यह जांच करेगा कि आपका जार हस्ताक्षरित है। आप मेनिफेस्ट फ़ाइल और META-INF/ के भीतर फ़ाइलों पर भी एक त्वरित रूप से देख सकते हैं।

प्रमाण पत्रों पर विश्वास करने के लिए पॉप अप संवाद अक्षम किया जा सकता है। सूर्य के कार्यान्वयन में: जावा नियंत्रण कक्ष खोलें; उन्नत टैब पर जाएं; सुरक्षा नोड का विस्तार करें; शीर्ष दो टिकबॉक्स "उपयोगकर्ता को हस्ताक्षरित संदर्भ पर अनुमति देने की अनुमति दें" और "उपयोगकर्ता को अविश्वसनीय प्राधिकारी से सामग्री को अनुमति देने की अनुमति दें" होना चाहिए।

+0

मेरी आवश्यकताओं के आधार पर, कोड पर हस्ताक्षर होना है। मैंने अपनी जार फ़ाइल की जांच की और कहा कि सबकुछ ठीक है। मेरी कक्षा फ़ाइल को smk लेबल किया गया है: हस्ताक्षर सत्यापित किया गया था, प्रविष्टि प्रकट में सूचीबद्ध है, और कम से कम एक प्रमाणपत्र keystore में पाया गया था। मेटा-आईएनएफ फ़ोल्डर भी ठीक दिखता है। सेटिंग्स मेरे नियंत्रण कक्ष में भी ठीक है। मैं अन्य स्व-हस्ताक्षरित एप्लेट ठीक देख सकता हूं। – user107312

+3

निष्पक्षता में, एप्लेट पर हस्ताक्षर (और सामान्य रूप से प्रमाणपत्रों के साथ काम करना) काफी परेशान प्रक्रिया हो सकती है। इसका मतलब यह नहीं है कि पोस्टर कोड के संदर्भ में "वे क्या कर रहे हैं" नहीं जानते हैं ... –

+0

सुरक्षा के मामले में "वे क्या कर रहे हैं" लोगों की संख्या काफी छोटी प्रतीत होती है । –

1

सबसे पहले, मैं एक मान्य कोड हस्ताक्षर प्रमाण पत्र प्राप्त करने का सुझाव दूंगा। आप Thawte से एक मुफ्त प्रमाण पत्र प्राप्त कर सकते हैं। हालांकि आम तौर पर इन कर्टों का उपयोग एस/एमआईएम के लिए किया जाता है, वे कोड हस्ताक्षर के लिए भी मान्य होते हैं।

दूसरा विकल्प अपने स्वयं के हस्ताक्षरित प्रमाण को जेआरई की कैकर फ़ाइल में आयात करना है, जिसका आपका ब्राउज़र आ रहा है।

जांच करने की अगली बात यह सुनिश्चित करना है कि आपका ब्राउज़र आपका नवीनतम जार चला रहा है। ऐसा करने का एक तरीका हमेशा अपने संस्करण संख्या में वृद्धि करना है। दूसरा विकल्प आपके जावा एप्लेट कैश को साफ़ करने के लिए है।मैं आमतौर पर अपने ब्राउज़र के कैश को भी साफ़ करता हूं, लेकिन इसकी आवश्यकता नहीं होनी चाहिए।

+0

मुझे विश्वास है कि कोड हस्ताक्षर के लिए ई-मेल प्रमाणपत्रों का उपयोग करने की समस्या तय की गई है। –

+0

Thawte ने व्यक्तिगत ईमेल प्रमाण पत्र और वेब ऑफ ट्रस्ट (डब्ल्यूओटी) प्रमाणीकरण प्रणाली – Massimo

1

आपने कहा:

जब मैं उस html फ़ाइल खोलते हैं, तो मैं कभी नहीं सुरक्षा पुष्टिकरण संवाद बॉक्स मिलता है ...

आप अपने स्थानीय फाइल सिस्टम से फाइल खोल रहे हैं, या के माध्यम से HTML फ़ाइल और एप्लेट जार होस्ट करने वाले वेब सर्वर के लिए एक यूआरएल? यही कारण है कि आपको कोई चेतावनी नहीं मिलती है।

+0

बंद कर दिया है, मैं अपने स्थानीय सिस्टम से खोल रहा हूं। क्या आप कह रहे हैं कि सुरक्षा संवाद तब दिखाई नहीं देगा जब यह स्थानीय रूप से खोला गया हो? यदि यह सच है, तो क्या इसे स्थानीय रूप से प्रदर्शित करने का कोई तरीका है? यह मेरी परियोजना का परीक्षण करना बहुत आसान होगा। इस बीच, मैं यह देखने के लिए वेब सर्वर पर कोशिश करूँगा कि यह समस्या है या नहीं। – user107312

+0

वेब सर्वर से एक्सेस होने पर यह अभी भी काम नहीं कर रहा है। मुझे केवल मेरी .class फ़ाइलों, .jar फ़ाइल, और .html फ़ाइल की आवश्यकता है, है ना? क्या मुझे प्रमाणपत्र से संबंधित किसी भी फाइल की आवश्यकता है? – user107312

1

यहां अपने जारों पर हस्ताक्षर करने का एक तरीका है और फिर यह देखने के लिए जांचें कि सभी कक्षा फाइलें आपके कीस्टोर के साथ हस्ताक्षरित हैं।

#!/bin/bash 
KEYSTORE=/home/user/NetBeansProjects/sign/keystore 
FILES=`find /home/user/NetBeansProjects/Project/dist/ -name "*.jar"` 
for f in $FILES; 
    do echo password | /usr/bin/jarsigner -keystore $KEYSTORE -verbose $f myself; 
    echo "Signed $f"; 
    /usr/bin/jarsigner -verify -verbose -certs $f | grep X.509 | sort -u; 
done 
29

3 आसान चरणों

  1. Keytool -genkey -keystore myKeyStore -alias मुझे

  2. Keytool -selfcert -keystore myKeyStore -alias मुझे

  3. jarsigner -keystore myKeyStore jarfile .jar मुझे

+1

'-किस्टोर myKeyStore' भी वैकल्पिक है, है ना? मुझे अपना एप्लेट हस्ताक्षर मिला, इस तरह, लेकिन मेरा क्लिपबोर्डप्रोबलेम बना हुआ है। हालांकि सबसे अच्छा एप्लेट्सिंग (jarsigning) - ट्यूटोरियल मैंने वेब पर पाया। :) –

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