জাভা সিকিউরিটি এক্সেপশন: স্বাক্ষরকারীদের তথ্য মেলে না


121

আমি যথারীতি আমার ক্লাসগুলি পুনরায় কম্পাইল করেছিলাম, এবং হঠাৎ নীচের ত্রুটি বার্তাটি পেয়েছি। কেন? আমি কীভাবে এটি ঠিক করতে পারি?

java.lang.SecurityException: class "Chinese_English_Dictionary"'s signer information does not match signer information of other classes in the same package
    at java.lang.ClassLoader.checkCerts(ClassLoader.java:776)

উত্তর:


136

এটি তখন ঘটে যখন একই প্যাকেজভুক্ত ক্লাসগুলি বিভিন্ন জেআর ফাইল থেকে লোড করা হয় এবং those জেআর ফাইলগুলিতে স্বাক্ষরযুক্ত বিভিন্ন শংসাপত্র সহ স্বাক্ষর থাকে - অথবা, সম্ভবত প্রায়শই কমপক্ষে একটিতে স্বাক্ষর করা হয় এবং অন্য এক বা একাধিক অন্য না থাকে (যার মধ্যে ক্লাসগুলি বোঝানো রয়েছে ডিরেক্টরিগুলি থেকে যেহেতু এএফআইকে স্বাক্ষর করা যায় না)।

সুতরাং হয় তা নিশ্চিত করুন যে সমস্ত জেআর (বা কমপক্ষে একই প্যাকেজগুলির ক্লাস রয়েছে) একই শংসাপত্র ব্যবহার করে স্বাক্ষরিত হয়েছে, বা ওভারল্যাপিং প্যাকেজগুলির সাথে জেআর ফাইলগুলির ম্যানিফেস্ট থেকে স্বাক্ষরগুলি সরিয়ে ফেলুন।


আমি একই শংসাপত্রটি ব্যবহার করেছি, তবে এটির মেয়াদ শেষ হয়ে গেছে, কীভাবে এটি পুনরায় নতুন করবেন?
ফ্রাঙ্ক

34
কেউ কীভাবে newbies বোঝাতে পারেন? আমি এক সপ্তাহ আগে জাভা এবং বসন্তের সাথে কাজ শুরু করেছি এবং আমি হারিয়েছি।
mghz

আমি একই সমস্যার মুখোমুখি, তবে এটি হাইবারনেট জারে। এই জারগুলি স্বাক্ষরিত নয়, তবুও আমি এই সমস্যার মুখোমুখি। কেন? পড়ুন দয়া করে stackoverflow.com/questions/24386463/...
user613114

একই শংসাপত্রের সাথে একাধিক জারে সাইন করার জন্য কোনও নির্দিষ্ট প্রক্রিয়া রয়েছে কি? আমি একই শংসাপত্রের সাথে জারগুলি (একের পর এক) স্বাক্ষর করার চেষ্টা করেছি, তবে এখনও এর ব্যতিক্রম পেয়েছি: স্বাক্ষরকারী তথ্য একই প্যাকেজের অন্যান্য শ্রেণীর স্বাক্ষরকারী তথ্যের সাথে মেলে না
উদ্ভিদ

@ ওয়েগেইটা: দুঃখিত, সই করার পদ্ধতি নিয়ে আমার আসলে অভিজ্ঞতা নেই have
মাইকেল বর্গওয়ার্ট

45

এর চারপাশে একটি সহজ উপায় হ'ল আপনার আমদানি করা জার ফাইলগুলির ক্রম পরিবর্তন করার চেষ্টা করা যা (Eclipse) থেকে করা যেতে পারে। আপনার প্যাকেজটিতে ডান ক্লিক করুন -> নির্মাণের পথ -> বিল্ড পাথটি কনফিগার করুন -> তথ্যসূত্র এবং গ্রন্থাগারগুলি -> অর্ডার এবং রফতানি করুন। স্বাক্ষরযুক্ত ফাইল রয়েছে এমন জারের ক্রম পরিবর্তন করার চেষ্টা করুন।


আমার কাছে পরীক্ষিত হওয়ার জন্য একটি স্বাক্ষরযুক্ত জার ফাইল রয়েছে, একই প্যাকেজ, জুনিট, জের, অন্যান্য জারগুলির সাথে ক্লাসের ফাইলগুলি পরীক্ষা করা উচিত। গ্রহণের যথাযথ আদেশ কোনটি? নিশ্চিত না যে আমি এখনও সমস্ত সংমিশ্রণ চেষ্টা করেছি। তবে শ্রেণি লোডার সিকিউরিটি
এক্সেপশন

এই সমাধানের জন্য ধন্যবাদ, আমি সবেমাত্র জুনিট 5 এবং আমার হ্যামস্ট্রেস্ট-অল.জার ক্রম পরিবর্তন করেছি এবং এখন আমার পরীক্ষাগুলি আবারও কাজ করছে :)
ওয়ালনসফোলি

41

উ: আপনি যদি মাভেন ব্যবহার করেন তবে সংঘর্ষের জারগুলি ডিবাগ করার একটি কার্যকর উপায় হ'ল:

mvn dependency:tree

উদাহরণস্বরূপ, একটি ব্যতিক্রম জন্য:

java.lang.SecurityException: class "javax.servlet.HttpConstraintElement"'s signer information does not match signer information of other classes in the same package

আমরা করি:

mvn dependency:tree|grep servlet

এর আউটপুট:

[INFO] +- javax.servlet:servlet-api:jar:2.5:compile
[INFO] +- javax.servlet:jstl:jar:1.2:compile
[INFO] |  +- org.eclipse.jetty.orbit:javax.servlet.jsp:jar:2.2.0.v201112011158:compile
[INFO] |  +- org.eclipse.jetty.orbit:javax.servlet.jsp.jstl:jar:1.2.0.v201105211821:compile
[INFO] |  +- org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016:compile
[INFO] +- org.eclipse.jetty:jetty-servlet:jar:9.0.0.RC2:compile

সার্লেট-এপিআই 2.5 এবং জাভ্যাক্স.সারলেট 3.0.0.x সংঘর্ষ দেখায়।

খ। অন্যান্য দরকারী ইঙ্গিত (কীভাবে সুরক্ষা ব্যতিক্রম ডিবাগ করবেন এবং মেভেন ডিপগুলি কীভাবে বাদ দেবেন) প্রশ্নটিতে সাইনার তথ্যের সাথে মেলে না


আমি এসডিএসকে আইডিই হিসাবে ব্যবহার করছি, আমি কনসোলটি ম্যাভেন কনসোলে স্যুইচ করেছি এবং সেখানে কমান্ডের উপরের দিকে চালানোর চেষ্টা করেছি কিন্তু কিছুই ঘটেনি ... দেখে মনে হচ্ছে এসটিএসে / মাছিদের কনসোলটি কেবল আউটপুট প্রদর্শনের জন্য এটি গ্রহণ করবে তবে কোনও আদেশ স্বীকার করে না। নাকি আমি ভুল করছি?
ন্যানোসফ্ট

1
ন্যানোসফ্ট, মনে হচ্ছে আপনার প্রশ্নটি এসটিএস সম্পর্কিত, সুতরাং আপনি এটির জন্য একটি নতুন শীর্ষ-স্তর প্রশ্ন তৈরি করতে পারেন। mvn নিশ্চিতভাবে কমান্ড লাইন আর্গুমেন্ট গ্রহণ করে।
ইউজিন গ্র। ফিলিপভ

@ ইউজিনগ্রি. ফিলিপভ এই কীভাবে সম্পর্কিত? নির্ভরতা কী: ট্রি শোগুলি জারের সংস্করণ, এটি স্বাক্ষরকারীর সাথে সম্পর্কিত নয়
গ্যাভরিল

@ গ্যাভ্রিয়েল আমি খুব বেশি খনন করি নি, তবে আপনি যখন বিরোধ থেকে মুক্তি পাবেন, ব্যতিক্রম ঘটে না।
ইউজিন গ্র। ফিলিপভ

এটি কিছু ক্ষেত্রে সত্য হতে পারে তবে সব ক্ষেত্রে নয়। উদাহরণস্বরূপ com.microsoft.azure গোষ্ঠীর বিভিন্ন নিদর্শনগুলি একাধিক উত্স থেকে সংকলিত বলে মনে হয়, তাই তাদের মধ্যে কিছুগুলির এমনকি একই সংস্করণও নেই। এবং বেশিরভাগ ক্ষেত্রে একাধিক সংস্করণ থাকা ত্রুটি তৈরি করে না (এমনকি যদি প্রবর্তক প্লাগইন সতর্ক করে দেয় বা ব্যর্থ হয় তবে)
গ্যাভ্রিয়েল

23

আমার ক্ষেত্রে, আমি আমার লাইব্রেরির পথে বউনিসিস্টলের জেআর সংস্করণটি নকল করেছি: এস


2
আমার ক্ষেত্রেও একই ঘটনা ঘটেছিল। সমস্ত বিসি জারগুলি সরিয়ে এবং সঠিক সংস্করণগুলি লোড করা এটি সমাধান করেছে solved
ব্রোকেন_ওয়াইন্ডো

1
@ সিড্রিক - একই বাউন্সিস্টেল আমার পক্ষে ছিল
ন্যানোসফট

আমার ক্ষেত্রে ছিল কারণ বসন্ত-মেঘের অভ্যন্তরে jdk15on প্রয়োজন এবং আমি আমার প্রকল্পের জন্য বিসিপ্রভ-জেডিকি 16 ব্যবহার করছিলাম।
23:40

8

আমারও তেমন ব্যতিক্রম ছিল:

java.lang.SecurityException: class "org.hamcrest.Matchers"'s signer information does not match signer information of other classes in the same package

মূল সমস্যাটি হ'ল আমি হ্যামক্রস্ট গ্রন্থাগারটি দু'বার অন্তর্ভুক্ত করেছি। একবার মাভেন পম ফাইল ব্যবহার করুন। এবং আমি প্রকল্পটির নির্মাণের পথে JUnit 4 লাইব্রেরি (যা একটি হ্যামক্রস্ট গ্রন্থাগারও অন্তর্ভুক্ত) যুক্ত করেছি। আমাকে কেবল জুনিটকে বিল্ড পাথ থেকে সরিয়ে ফেলতে হয়েছিল এবং সবকিছু ঠিক আছে।


6

এটি সিজিবিআইবি-চালিত প্রক্সিগুলির সাথে দেখা দিতে পারে কারণ অ্যাপ্লিকেশন লক্ষ্য শ্রেণীর স্বাক্ষরকারী তথ্যের পরিবর্তে সিজিএলআইবি তার নিজস্ব স্বাক্ষরকারী তথ্য ব্যবহার করে।


4
এটি যদি হয় তবে আমরা কী করতে পারি?
লেয়ানড্রো

@ জারেক: এখানে সমাধান কী হবে? আমরা কি এই সমাধানটি ব্যবহার করতে পারি? developer.jboss.org/thread/241718
গৌরব

@ গৌরভ আমরা স্বাক্ষরযুক্ত জারগুলি ব্যবহার বন্ধ করে দিয়েছি। এগুলি কেবল জাভা ওয়েব স্টার্টের জন্য প্রয়োজন ছিল এবং এটি দীর্ঘকাল পরিত্যক্ত ছিল।
জারেক প্রিজেগডজকি

4
  1. সাইন ইন করার পরে, অ্যাক্সেস: ডিস্টার্ব
  2. অতিরিক্ত .ar
  3. উইনার ব্যবহার করে, আপনি একটি ফোল্ডার ("ফোল্ডারের নাম" থেকে এক্সট্রাক্ট) বিকল্পের জন্য এক্সট্রাক্ট করুন
  4. অ্যাক্সেস: META-INF / MANIFEST.MF
  5. প্রতিটি স্বাক্ষর এর মতো মুছুন:

নাম: নেট / এসএফ / জ্যাস্পেরপোর্টস / ইঞ্জিন / ইউজার / এক্সএমএল / জ্যাক্সএনএক্সপ্যাক্সেক্সটারফ্যাক্ট্রি.এইচ এসএএ-256-ডাইজেস্ট: কিউ 3 বি 5 ডাব্লুডাব্লু + এইচএলএক্স / + এলপি 2 + এল 0/6 ডাব্লুআরভিএক্সআরএইচ 1 মিসবিও 1 ডিকিক্সটি 6 ভিএক্সসি =

  1. ফাইলটি সংরক্ষণ করুন
  2. জিপ আবার
  3. পুনর্নির্মাণ এক্সট টু। জার পিঠে
  4. ইতিমধ্যে

আপনার পরামর্শ অনুসরণ করে আমার কিছু সমস্যা হচ্ছে: stackoverflow.com/questions/33988136/…
রিং করুন

2

আপনি যদি এটিটিকে Eclipse এ চালাচ্ছেন তবে বিল্ড পাথে যুক্ত হওয়া কোনও প্রকল্পের জারগুলি পরীক্ষা করুন; বা নিয়ন্ত্রণ-শিফট-টি করুন এবং একই নামের জায়গার সাথে মিলে একাধিক জারের জন্য স্ক্যান করুন। তারপরে প্রকল্পের নির্মাণের পথ থেকে অপ্রয়োজনীয় বা পুরানো জারগুলি সরান।


2

Eclipse এবং JUnit 5 নিয়ে আমার এই সমস্যা হচ্ছে My

  1. প্রকল্পে রাইট ক্লিক করুন।
  2. [জাভা বিল্ড পাথ] খুলুন।
  3. অর্ডার এবং এক্সপোর্ট ক্লিক করুন।
  4. তারপরে জুনিয়িটকে উচ্চ অগ্রাধিকারে চাপ দিন।

1

আমার ক্ষেত্রে এটি প্যাকেজ নামের বিরোধ ছিল। বর্তমান প্রকল্প এবং স্বাক্ষরিত রেফারেন্সযুক্ত লাইব্রেরিতে একটি প্যাকেজ অভিন্ন ছিল package.foo.utils। সবেমাত্র বর্তমান প্রকল্পের ত্রুটি-প্রবণ প্যাকেজটির নামটি অন্য কিছুতে পরিবর্তন করেছে।


1

কিছুটা পুরানো থ্রেড তবে যেহেতু আমি এটি নিয়ে বেশ কিছু সময়ের জন্য আটকে ছিলাম, এখানে ফিক্সটি রয়েছে (আশা করি এটি কাউকে সহায়তা করে)

আমার দৃশ্য:

প্যাকেজের নাম: com.abc.def। এই প্যাকেজটির ক্লাসগুলি রয়েছে এমন 2 টি জার ফাইল রয়েছে বলে জার 1 এবং জার 2 অর্থাৎ কিছু শ্রেণি জার 1 এ উপস্থিত রয়েছে এবং অন্যরা জার 2 এ উপস্থিত রয়েছে। এই জার ফাইলগুলি একই কীস্টোর ব্যবহার করে কিন্তু বিল্ডে (অর্থাত্ পৃথকভাবে) বিভিন্ন সময়ে স্বাক্ষরিত হয়। জার 1 এবং জার 2 এ ফাইলগুলির জন্য এটি বিভিন্ন স্বাক্ষরের ফলস্বরূপ বলে মনে হচ্ছে।

আমি সমস্ত ফাইলগুলি জার 1 এ রেখেছি এবং সেগুলি এক সাথে তৈরি (এবং স্বাক্ষরিত) করেছি। সমস্যা চলে যায়।

PS: প্যাকেজের নাম এবং জার ফাইলের নামগুলি কেবল উদাহরণ


1

আপনি বাউন্সিস্টেল.অর্গ থেকে সমস্ত জারগুলি যুক্ত করলে (আমার ক্ষেত্রে ক্রিপ্টো-159.zip থেকে), কেবল আপনার প্রযোজ্য নয় এমন জেডিকে জন্য সরিয়ে ফেলুন। অপ্রয়োজনীয়তা রয়েছে। আপনার সম্ভবত সম্ভবত "jdk15on" জারগুলি দরকার।


এটি হ'ল আমার সমস্যা, আমি একটি অ্যাপ্লিকেশন সার্ভারে একটি বিসি অ্যাপ্লিকেশন স্থাপন করছি যা ইতিমধ্যে এর শেয়ারড লিবস ফোল্ডারে একই স্বনির্ধারিত স্বাক্ষরিত সংস্করণ রয়েছে, সমাধানগুলি সেগুলি সরিয়ে নতুন ব্যবহার করা ছিল।
GChiappe

1

এই প্রশ্নটি দীর্ঘদিন ধরে চলেছে তবে আমি কোনও কিছুর মধ্যেই পিচ করতে চাই। আমি একটি স্প্রিং প্রকল্প চ্যালেঞ্জ নিয়ে কাজ করছি এবং আমি এটি আবিষ্কার করেছি আইডিইতে cl আপনি যদি স্প্রিং বুট রেস্ট এপিআইয়ের জন্য মাভেন বা গ্রেডল ব্যবহার করছেন, আপনাকে বিল্ড পাথের জুনিট 4 বা 5 সরিয়ে ফেলতে হবে এবং জুনিয়টকে আপনার পম.এক্সএমএল বা গ্রেডল বিল্ড ফাইলে অন্তর্ভুক্ত করতে হবে। আমার ধারণা, এটি yML কনফিগারেশন ফাইলের ক্ষেত্রেও প্রযোজ্য।


0

আপনি যদি আলাদা আলাদা নামের সাথে একটি ফাইল অন্তর্ভুক্ত করেন বা দুবার বিভিন্ন লোকেশন থেকে দু'বার অন্তর্ভুক্ত করেন, বিশেষত যদি এটি একই ফাইলের দুটি ভিন্ন সংস্করণ হয় This


আমি দুঃখিত কিন্তু আমি বুঝতে পারি না। কি ধরনের ফাইল? আমার ক্ষেত্রে ত্রুটিটি org.jboss.security.xacML.jaxb.PolferencesType শ্রেণীর সাথে রয়েছে এবং আমি নিশ্চিত যে এটি কেবল JBoss EAP 5.2 (/EnterprisePlatform-5.2.0/jboss-eap-5.2/) এর সাথে আসে j jboss-as / সাধারণ / lib / jbossxacML.jar)
Leandro

0

আমি এটা ঠিক করতে পারে।

মূল কারণ: সাইন জার্স সহ সান জ্যাকএক্সবি বাস্তবায়ন ব্যবহার করার সময় এটি একটি সাধারণ সমস্যা। মূলত জ্যাকএক্সবি বাস্তবায়ন প্রতিবিম্বটি ব্যবহার না করে সরাসরি সম্পত্তি অ্যাক্সেসের জন্য একটি শ্রেণি তৈরি করে প্রতিফলন এড়াতে চেষ্টা করছে। দুর্ভাগ্যক্রমে, এটি একই প্যাকেজে নতুন ক্লাসটি তৈরি করে যা ক্লাসটি অ্যাক্সেস করা হচ্ছে সেখান থেকেই এই ত্রুটিটি এসেছে।

রেজোলিউশন: JAXB অপ্টিমাইজেশানগুলি অক্ষম করতে নীচের সিস্টেমের সম্পত্তি যুক্ত করুন যা স্বাক্ষরিত জারগুলির সাথে সামঞ্জস্যপূর্ণ নয়: -Dcom.sun.xML.bind.v2.bytecode.ClassTailor.noOptimize = সত্য

রেফ: https://access.redhat.com/site/solutions/42149


0

@ মোহিত ফৌগাত প্রতিক্রিয়ার ভিত্তিতে, আপনি যদি @ গ্র্যাব টিকা দিয়ে গ্রোভি চালাচ্ছেন তবে আপনি এ জাতীয় টীকাটিকে পুনরায় অর্ডার দেওয়ার চেষ্টা করতে পারেন।


0

JUnit + রেস্ট আশ্বস্ত + হ্যামক্রাস্ট ব্যবহার করার সময় আমার সাথে এটি ঘটেছিল, এক্ষেত্রে পথ তৈরিতে জুনিটকে যুক্ত করবেন না, যদি আপনার যদি এই মভেন প্রজেক্ট থাকে তবে এটি আমাকে সমাধান করেছে, নীচে pom.xml

<dependencies>

    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <version>3.0.0</version>
    </dependency>

    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-all</artifactId>
        <version>1.3</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>

    </dependency>


</dependencies>

0

আমি জুনিআইটি 5 চালাচ্ছিলাম এবং হ্যামক্রস্টের বাহ্যিক জারটিও উল্লেখ করছিলাম। তবে হামক্রস্টও জুনিআইটি 5 লাইব্রেরির অংশ । সুতরাং, আমাকে নির্মাণের পথে বহিরাগত হামেক্রেস্ট জারের ফাইলটি JUNIT 5 লাইব্রেরি আপ করতে হবে ।

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.