2015-04-17 8 views
10

TłoBouncyCastle 1,51 załadunek w wojnie na JBoss Application Server 8.0

Próbuję użyć nadmuchiwany bibliotekę zamkową do odszyfrowania kluczy prywatnych w moim wojny. Teraz najpierw przetestowałem kod w samodzielnej aplikacji i działało dobrze. Teraz, kiedy testuję to jako webapp w Wildfly8.0 mam problemy z Bouncy Castle.

The Wildfly 8.0 am using has dmuchany moduł dostawca zamek zainstalowany. Wersja BC używana w wersji 1.46.

Kod, który stworzyłem, używa v1.51. śledzę kroki opisane tutaj:

już próbował

  • Instalowanie po JCE licy pliki.
  • Dodawanie do listy dostawców.

Problem

Błąd otrzymuję to:

unable to read encrypted data: JCE cannot authenticate the provider BC 

I kod, który wywołuje powyższy błąd, w sposób następujący:

PKCS8EncryptedPrivateKeyInfo kp = (PKCS8EncryptedPrivateKeyInfo) keyPair; 
InputDecryptorProvider pkcs8dec = new JceOpenSSLPKCS8DecryptorProviderBuilder() 
     .setProvider(new BouncyCastleProvider()) 
     .build("somepass".toCharArray()); 
PrivateKeyInfo pko = kp.decryptPrivateKeyInfo(pkcs8dec);<-- ##Error here 

także dodać szczegóły, w moim pom.xml dodałem słoik z zakresem kompilacji, więc biblioteki są kopiowane do wojny i ge t zainstalowane w WEB-INF/lib.

Wszelkie wskazówki, jak rozwiązać powyższy problem?

+0

Wpisane pytanie "JBoss AS7: ..." brzmi "Utwórz moduł Jboss (folder [...]). dmuchane słoiki z zamku, które chcesz mieć w nim globalnie, wraz z plikiem module.xml [...] ", ale powyżej mówisz, że słoik BC zostanie zainstalowany w WEB-INF/lib. Czy to możliwe, że źle zrozumiałeś instrukcje tam? –

+0

Istnieje istniejący moduł JBoss z BC v1.46. Chcę użyć BC v1.51 z moim webapp. Nie mogę zaktualizować modułu JBoss do wersji BC 1.5.1, ponieważ inne aplikacje są zależne od wersji 1.46. Mam nadzieję, że to wyjaśnia. – eminemence

+1

Nie możesz utworzyć drugiego modułu dla wersji 1.51? –

Odpowiedz

3

I. Łącząc ideę Piotra (@comment) i https://developer.jboss.org/thread/175395, tworzyć "własną wersję BC" z nazwą niestandardową:

  1. Utwórz moduł 'moich .bouncycastle' w następujący sposób:

    • Under $ JBOSS_HOME/moduły, stworzyć katalog 'mój/BouncyCastle/main'. Katalog "mój" może być nie tam. ;)

    • Kopiowanie bcprov- [your-Version] .jar do mój/BouncyCastle/main

    • Utwórz plik „bcprov- [your-Version] JAR.index 'in my/bouncycastle/main, który jest w zasadzie wynikiem polecenia jar -tf bez linii ".class". (rurka & edytuj ...)

      Położyłem pustą linię u góry, ponieważ te pliki .index zawsze wydają się mieć jeden. Załączam ten plik jako "bcprov-jdk16-1.46.jar.index".

    • Utwórz plik o nazwie „module.xml”, również w mój/BouncyCastle/main, która będzie wskazywać na plik jar i modułu odniesienia „javax.api” jako zależność.

      Załączam ten plik jako "module.xml". Moduł jest kompletny.

  1. Ponieważ jestem wdrażania w pliku EAR, musiałem dodać wpis zależnościach moduł do mojego ucha jest META-INF/jboss-rozmieszczenia plik -structure.xml, w części, w taki sposób:

(oświadczenie dotyczy również plików wojnie, gdy wdrażane na najwyższym poziomie, użyj niestandardową n ame jako odniesienie modułu)

<deployment><dependencies><module name="my.bouncycastle" slot="main" export="true"/> 
  1. Upewnij że katalog EAR/lib NIE zawierają bcprov- [Twoja wersja] JAR. (. Faktycznie II)

Uwagi: do 'szczelina = "main" i' eksport = "true" parametry są bardzo ważne w pliku jboss-zależnościach structure.xml ..

II. Dostosuj swoją zależność maven (-a) do:

<scope>provided</scope> 

Uwaga: Nie zmieniaj (artefakty grupowych y) Maven dependecy do "my.bouncycastle", tylko zakres, to zapewni Państwu miły kompilacji - zachowanie w czasie przez większość IDE's AND będzie zapobiegać twojemu (maven-) wojnie/jar/ear-plugin od pakowania tego do bibliotek! (I który byłby w każdym razie prawidłowym zakresem dla zależności takiej jak ta).

Powiązane problemy