2016-10-14 4 views
2

ich die folgende dependecy in meinem pom.xml von Maven mit:Maven mit bouncycastle jar Fehler

<dependency> 
    <groupId>org.bouncycastle</groupId> 
    <artifactId>bcprov-jdk15on</artifactId> 
    <version>1.55</version> 
</dependency> 

Nachdem das Projekt innerhalb läuft alles verdunkeln funktioniert gut. Durch die Verwendung der Exportfunktion von Eclipse, die Erstellung einer ausführbaren JAR-Datei, einschließlich aller Abhängigkeiten, funktioniert auch alles einwandfrei. Keine anderen Parameter oder Konfigurationen in Eclipse sind gesetzt.

Nur wenn ich einen MVN gebaut habe, scheint etwas falsch zu sein. (Maven gebaut läuft ohne Fehler oder Warnungen) -> Abhängigkeiten sind alle enthalten.

In diesem Moment tritt ein Fehler auf, wenn versucht wird, eine https-Verbindung herzustellen, der Ort, an dem diese Bouncycastle-Bibliothek verwendet wird.

Fehler:

javax.net.ssl.SSLException: java.security.ProviderException: Could not derive key 
     at sun.security.ssl.Alerts.getSSLException(Unknown Source) 
     at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) 
     at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) 
     at sun.security.ssl.SSLSocketImpl.handleException(Unknown Source) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
     at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:553) 
     at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:412) 
     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:179) 
     at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:328) 
     at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:612) 
     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:447) 
     at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884) 
     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) 
     at plugin.KITIlias.executePost(KITIlias.java:117) 
     at plugin.KITIlias.login(KITIlias.java:45) 
     at control.IliasManager.login(IliasManager.java:27) 
     at control.IliasStarter.login(IliasStarter.java:31) 
     at control.LoginProvider$1.run(LoginProvider.java:56) 
     at java.lang.Thread.run(Unknown Source) 
Caused by: java.security.ProviderException: Could not derive key 
     at sun.security.ec.ECDHKeyAgreement.engineGenerateSecret(ECDHKeyAgreement.java:133) 
     at sun.security.ec.ECDHKeyAgreement.engineGenerateSecret(ECDHKeyAgreement.java:163) 
     at javax.crypto.KeyAgreement.generateSecret(KeyAgreement.java:648) 
     at sun.security.ssl.ECDHCrypt.getAgreedSecret(Unknown Source) 
     at sun.security.ssl.ClientHandshaker.serverHelloDone(Unknown Source) 
     at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source) 
     at sun.security.ssl.Handshaker.processLoop(Unknown Source) 
     at sun.security.ssl.Handshaker.process_record(Unknown Source) 
     at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) 
     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
     ... 16 more 
Caused by: java.security.InvalidAlgorithmParameterException 
     at sun.security.ec.ECDHKeyAgreement.deriveKey(Native Method) 
     at sun.security.ec.ECDHKeyAgreement.engineGenerateSecret(ECDHKeyAgreement.java:130) 
     ... 25 more 
Exception in thread "Thread-4" java.lang.NullPointerException 
     at plugin.KITIlias.executePost(KITIlias.java:125) 
     at plugin.KITIlias.login(KITIlias.java:45) 
     at control.IliasManager.login(IliasManager.java:27) 
     at control.IliasStarter.login(IliasStarter.java:31) 
     at control.LoginProvider$1.run(LoginProvider.java:56) 
     at java.lang.Thread.run(Unknown Source) 

für mich So wie es scheint, etwas während des Maven gebaut Prozess fehlt. Ist es erforderlich, eines der Gläser zu unterzeichnen?

meine komplette pom.xml ist

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>X</groupId> 
    <artifactId>Y</artifactId> 
    <version>v1.1.0</version> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.10</version> 
     </dependency> 

     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 

     <dependency> 
      <groupId>org.jsoup</groupId> 
      <artifactId>jsoup</artifactId> 
      <version>1.7.2</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpcore</artifactId> 
      <version>4.4.5</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpclient</artifactId> 
      <version>4.5.2</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      <version>1.1.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.controlsfx</groupId> 
      <artifactId>controlsfx</artifactId> 
      <version>8.20.8</version> 
     </dependency> 

     <dependency> 
      <groupId>org.bouncycastle</groupId> 
      <artifactId>bcprov-jdk15on</artifactId> 
      <version>1.55</version> 
     </dependency> 


    </dependencies> 

    <build> 
     <plugins> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.5.5</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
         <configuration> 
          <descriptorRefs> 
           <descriptorRef>jar-with-dependencies</descriptorRef> 
          </descriptorRefs> 
          <archive> 
           <manifest> 
            <mainClass>view.Dashboard</mainClass> 
           </manifest> 
          </archive> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.5.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

ich das runnable jar bin immer mit:

mvn clean install 

EDIT: Manifest-Datei von Eclipse Export

Manifest-Version: 1.0 
Rsrc-Class-Path: ./ junit-4.10.jar hamcrest-core-1.1.jar log4j-1.2.17. 
jar jsoup-1.7.2.jar httpcore-4.4.5.jar httpclient-4.5.2.jar commons-c 
odec-1.9.jar commons-logging-1.1.1.jar controlsfx-8.20.8.jar openjfx- 
dialogs-1.0.2.jar bcprov-jdk15on-1.55.jar 
Class-Path: . 
Rsrc-Main-Class: view.Dashboard 
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader 

-> scheint wie es noch Abhängigkeiten zu Eklipse

gibt
+0

mir scheint, dass Ihr Maven eine andere Java verwendet, im Vergleich zu verdunkeln. Und diese Java-Version, die von Maven verwendet wird, ist möglicherweise nicht mit Sicherheitszertifikaten ausgestattet. Arbeitest du in einer Firma? –

+0

Maven, Eclipse, OS -> alle verwenden die gleiche Java-Version. Ich arbeite nicht in einer Firma, nein. Sind nicht alle Zertifikate Teil des jvm? und nichts Besonderes für Sonnenfinsternis oder Maven? – DeOldSax

+0

Ich sehe dieses genaue Problem. Ich arbeite in einer Firma. Der Entwicklungszweig hat dieses Problem nicht. Es ist nur meine Branche, die dieses Problem hat. Könnte es mit Abhängigkeiten zusammenhängen? Weil ich ein paar Abhängigkeiten hinzugefügt habe. – NewQueries

Antwort

2

Problem scheint hier zu sein, dass die Abhängigkeit von Bouncycastle unterzeichnet werden muss. Das Glas ist nicht mehr signiert, wenn es von Maven in einem anderen Gefäß gepackt wird. Die Lösung besteht darin, alle Abhängigkeiten neben der JAR-Datei zu halten und ein Klassenpfadverzeichnis hinzuzufügen. Jetzt kann das Hauptglas direkt das unterzeichnete Glas verwenden.

(aber ich würde wirklich lieber eine einzige JAR-Datei haben)

+0

Es gibt ein Problem mit "Shading" oder "1-jar-ing" Bouncy Castle (und anderen signierten Gläsern), aber ich denke nicht, dass das das besondere Problem ist. Für das Unterschreiben habe ich immer 1 jar nur die Java-Klassen verwendet (META-INF-Signaturen ausschließen) und dann mit meinem eigenen Zertifikat neu signiert. Für dieses spezielle Problem treffe ich es auch und habe noch keine Antwort gefunden. – RockMeetHardplace

Verwandte Themen