2009-01-10 28 views
16

Tôi đã làm việc với web bắt đầu trong một vài năm nay và có kinh nghiệm với việc ký các lọ và những gì không. Tôi đang thực hiện nỗ lực đầu tiên của mình khi triển khai ứng dụng RCP khi bắt đầu web và mặc dù tôi đã ký tất cả các lọ với cùng chứng chỉ Tôi vẫn gặp lỗi này: 'tài nguyên jar trong jnlp không được ký bởi cùng một chứng chỉ'tài nguyên jar trong jnlp không được ký bởi cùng một giấy chứng nhận

Có ai khác bắt gặp điều này không? Nếu có, bất kỳ ý tưởng nào về cách khắc phục?

Trả lời

12

Khi tôi gặp sự cố tương tự sau khi kiểm tra các bình, hóa ra là một số bình bên thứ 3 đã được người khác ký.

Bạn nên tạo một tập tin jnlp riêng cho các lọ có chữ ký của các giấy chứng nhận khác và đọc jnlp này từ tập tin jnlp của bạn:

<resources> 
    ... 
    <extension name="other" href="other.jnlp"/> 
</resources> 

Here hay here bạn có thể tìm thấy một ví dụ.

+0

Điều đó có ý nghĩa tổng thể, cảm ơn! – javamonkey79

+2

Tôi đã gặp vấn đề tương tự này. Thay vì sử dụng tiện ích mở rộng, tôi đã viết một tập lệnh nhỏ để tách các tệp chữ ký (ví dụ: META-INF/*. RSA, * .DSA và * .SF) khỏi các bình bên thứ 3 trước khi ký chúng. – qualidafial

+1

Đó là ok nếu bạn không cần chữ ký gốc. Nhưng đôi khi bạn cần điều đó. – asalamon74

3

Đây có thể là mục nhập tệp kê khai cũ từ một lọ đã được ký mà bạn sử dụng làm thư viện. Tôi gặp phải vấn đề này với jogl thông qua webstart. Hãy thử cách này:

Giải nén tất cả các lọ, thanh lọc tất cả các thư mục META-INF, bình và ký lại chúng.

3

Tôi đã tìm thấy rằng JNLP/Webstart không giống như nhiều chữ ký/ký thông qua jarsigner.exe cho một JAR đã cho. Nếu một JAR như BouncyCastle (mà đi kèm được chỉ định) được ký một lần nữa với chứng chỉ của công ty bạn, kiểm tra trực quan dẫn tôi tin rằng Giấy chứng nhận và chữ ký mới được thực hiện đúng trong JAR. nhưng JNLP có thể chỉ đọc chữ ký đầu tiên (chữ cái?) trong META-INF, và do đó khiếu nại nó không phù hợp với các JAR khác của bạn (chỉ có một, Công ty, chữ ký trên mỗi JAR).

+0

Tôi có thể xác nhận điều này. Tương tự ở đây: chữ ký hiện tại cho một JAR do Eclipse cung cấp (bắt đầu bằng _E_) và thêm chữ ký bắt đầu bằng _V_. Chữ ký là OK cho chứng chỉ của riêng tôi, nhưng JNLP dường như kiểm tra với cert eclipse. – Kariem

2

Tôi đã có trải nghiệm giống hệt như được mô tả bởi Matthew với BARyCastle JAR được chỉ định. Tuy nhiên, tôi thấy rằng phiên bản JRE 1.6.0_14 và sau đó sẽ sẵn sàng chấp nhận các JAR với nhiều chữ ký (như tôi mong đợi). Do đó, tôi không cần sử dụng cơ chế mở rộng thành phần JNLP 'được mô tả ở trên.

PS Không tìm thấy bất kỳ tham chiếu rõ ràng nào cho bản sửa lỗi này trong ghi chú phát hành 1.6.0_14. Tuy nhiên, tôi đã xác minh rằng nhiều JAR đã ký hoạt động trong tất cả các phiên bản sau (ít nhất 14 - 17 + 24).

0

Trong dự án của tôi, điều xảy ra là có vài trường hợp trong nhóm cân bằng tải, có một số trường hợp với phiên bản mã cũ và một số phiên bản mới. Vì vậy, có các chứng chỉ không được ký bởi cùng một chứng chỉ ...

Các vấn đề liên quan