2011-11-18 31 views
14

Tôi đã cố gắng để xác minh việc ký Jar:không hợp lệ tập tin chữ ký SHA1 tiêu hóa

jarsigner -verify -verbose -certs example.jar 

tôi bị vấn đề sau đây:

jarsigner: java.lang.SecurityException: invalid SHA1 signature file digest for o 
rg/apache/log4j/net/DefaultEvaluator.class 

tôi có một số gợi ý về việc sử dụng -digestalg SHA-1 nhưng tôi không biết nơi tôi nên đặt tuyên bố này!

Tôi hy vọng bạn có thể giúp tôi khắc phục sự cố.

Trả lời

13

Dưới đây là giải pháp:

jarsigner -keystore mykeystore -digestalg SHA1 jarfile alias 

Để xác minh:

jarsigner -verify -verbose -certs jarfile 
+0

Giải pháp tương tự này hoạt động nếu bạn nhận được biến thể SHA-256 của thông điệp OP đang nhận được. – slm

+3

điều này chỉ hoạt động khi các lọ gốc chưa được ký. –

+0

Điều này dường như không hoạt động trên Java 7 & 8. – Ahmed

27

Lỗi này cũng có thể xảy ra khi bình được ký kết hai lần.

Giải pháp là 'bỏ' bình bằng cách xóa *. SF, *. DSA, *. RSA tập tin từ bình META-INF và sau đó ký lại vào bình.

+1

Đã xác nhận, đối với tôi vấn đề là bình được ký hai lần. – Doug

+2

Không đủ trong trường hợp của tôi. Cũng phải xóa "SHA" hồ sơ trong tệp kê khai. – Makatun

2

Điều này phù hợp với tôi. Tôi đã phải thay đổi ANT thành phiên bản 1.8.3 và thêm thuộc tính DIGESTALG:

<!-- VLS2014 ADDED digestalg="SHA1" --> 
<signjar keystore="${security.keystore}" 
     storepass="${security.storepass}" 
     keypass="${security.keypass}" 
     alias="${security.alias}" 
     jar="${basedir}/temp/tj/${justfname}" 
     signedjar="${real.signed.jar}" 
    digestalg="SHA1" 
     /> 

<delete file="${basedir}/temp/tj/${justfname}" /> 
</target> 
Các vấn đề liên quan