2013-06-25 29 views
7

Tôi đang gặp sự cố với chứng chỉ được tạo mà tôi đang sử dụng để kết nối với các dịch vụ đẩy táo. Tất cả hoạt động tốt khi file p12 tạo ra là trong src chính thư mục của tôi// java, nhưng tôi chuyển nó đến src/main/nguồn lực và nó quyết định ngừng làm việc với các lỗi sau:chứng chỉ được tạo ngừng hoạt động khi được chuyển đến thư mục tài nguyên

DerInputStream.getLength(): lengthTag=111, too big. 

Để có được thành một số chi tiết hơn: Tôi đang sử dụng thư viện thông báo đẩy notnoop và làm theo hướng dẫn từ Ray Wenderlich để tạo chứng chỉ. sau đó, tôi đã sử dụng lệnh sau để tạo tệp p12 để sử dụng trong java:

openssl x509 -in aps_development.cer -inform DER -out aps_development.pem -outform PEM 
openssl pkcs12 -nocerts -in single.p12 -out single.pem 
openssl pkcs12 -export -inkey single.pem -in aps_development.pem -out dual.p12 

sau đó tôi đã chuyển dual.p12 vào dự án java của mình. Lúc đầu, tập tin nằm trong thư mục/src/main/java của tôi, cho phép đọc số com.company.push.certificates (trong khi mã yêu cầu tệp là com.company.push). Tôi yêu cầu một inputstream bằng cách sử dụng

InputStream stream = this.getClass().getResourceAsStream("certificates/dual.p12"); 

này làm việc tốt trong việc phát triển, nhưng không phải khi xây dựng dự án (sử dụng maven), đó là lý do tại sao tôi chuyển tài nguyên vào thư mục tài nguyên, sử dụng gói chính xác tương tự. Tài nguyên vẫn được tìm thấy, nhưng bây giờ tôi nhận được các số điện thoại được đề cập ở trên java.io.IOException

Bất kỳ ai biết điều gì có thể gây ra điều này?

Ps: khi tôi di chuyển tệp trở lại gói trong src/main/java, tất cả đều hoạt động tốt trở lại, vì vậy chứng chỉ có vẻ hợp lệ.

Trả lời

18

Kiểm tra nội dung của tệp chứng chỉ SAU KHI xây dựng, khi maven đã được sao chép sang mục tiêu/lớp/... Có thể lọc tài nguyên maven, hoặc thứ khác trong bản dựng của bạn đang sửa đổi tệp. Xác minh những gì kết thúc trong thư mục lớp là CHÍNH XÁC giống như những gì có trong thư mục tài nguyên.

http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

+0

Tôi cảm thấy như một thằng ngốc tôi không tự kiểm tra điều này ... Điều này có vẻ là vấn đề. Ít nhất là trong một số loại. Trong khi phát triển tôi sử dụng một cá thể jboss cục bộ, tôi đã kiểm tra tệp trong thư mục triển khai, có vẻ như một cái gì đó thực sự đã gây rối với tệp.Nó dường như thậm chí có một mã hóa khác nhau (UTF-8), vì vậy tôi giả sử nó được coi là một tập tin văn bản thay vì một tập tin nhị phân. Làm thế nào tôi có thể ngăn chặn điều này? –

+0

Ok, vì lý do nào đó, jboss nghĩ rằng nó sẽ gây rối với các tệp .p12, bất kể nội dung. Đổi tên tệp thành * .p12.cert có vẻ đủ để 'sửa' nó, không làm tôi rất vui khi: ( –

11

này đang xảy ra vì lọc nguồn maven đang làm hư hỏng tập tin p12 của bạn.

Chúng tôi giải quyết này bằng cách loại trừ các file p12 từ nguồn maven lọc với điều này trong pom.xml:

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     <excludes> 
      <exclude>**/*.p12</exclude> 
     </excludes> 
    </resource> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>false</filtering> 
     <includes> 
      <include>**/*.p12</include> 
     </includes> 
    </resource> 
</resources> 
7

Cá nhân tôi không thích sao chép các phần không bao gồm/bao gồm trong maven xây dựng và có hai các phần tài nguyên phải được giữ đồng bộ - vì vậy tôi thích sử dụng plugin tài nguyên maven để cấu hình nonFilteredFileExtensions thay thế.

Phần nguồn lực trong phần xây dựng sau đó chỉ đơn giản là (cộng với bất kỳ cụ thể bao gồm bạn có thể cần):

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
    </resource> 
</resources> 

Cho maven-nguồn-plugin mà file không để lọc khi bao gồm:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>2.7</version> 
     <configuration> 
      <delimiters> 
       <delimiter>@</delimiter> 
      </delimiters> 
      <nonFilteredFileExtensions> 
       <nonFilteredFileExtension>p12</nonFilteredFileExtension> 
       <nonFilteredFileExtension>pfx</nonFilteredFileExtension> 
       <nonFilteredFileExtension>pem</nonFilteredFileExtension> 
      </nonFilteredFileExtensions> 
     </configuration> 
    </plugin> 

Xem: http://maven.apache.org/plugins/maven-resources-plugin/examples/binaries-filtering.html

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