2013-10-28 13 views
6

Tôi đã nhận được chứng chỉ mới ở định dạng crt/cert. Khi tôi mở tệp này trong trình chỉnh sửa văn bản, họ đã thêm chuỗi chứng chỉ hoàn chỉnh vào tệp này. Mỗi chứng chỉ bắt đầu với:Không thể tải tệp P7B vào tệp kho khóa

-----BEGIN CERTIFICATE----- 

Và kết thúc với:

-----END CERTIFICATE----- 

Hiện tại không có dòng trống ở giữa. Vì tôi không quan tâm đến openssl, tôi đã mở chứng chỉ vào Windows và xuất chứng chỉ với chuỗi hoàn chỉnh ở định dạng PKCS#7 (test.p7b). Khi tôi mở tập tin này tất cả có vẻ tốt trong Windows và gốc, trung gian và giấy chứng nhận là tất cả của họ trong chuỗi.

Khi tôi đặt các tập tin test.p7b trên máy chủ và cố gắng nhập này với keytool như sau:

keytool -import -trustcacerts -alias my.domain.com -keystore my.domain.keystore -keypass changeme -storepass changeme -file test.p7b 

tôi nhận được lỗi sau:

keytool error: java.lang.Exception: Input not an X.509 certificate 

Khi tôi kiểm tra các tập tin P7B tôi cũng gặp lỗi:

bash-4.1$ openssl x509 -in test.p7b -text 
unable to load certificate 
140009984849736:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:698:Expecting: TRUSTED CERTIFICATE 

hoặc:

bash-4.1$ openssl x509 -in test.p7b -inform DER -text 
unable to load certificate 
140396587853640:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1320: 
140396587853640:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:382:Type=X509_CINF 
140396587853640:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:752:Field=cert_info, Type=X509 

Ai đó có thể giúp tôi không?

+0

openssl x509 -in test.p7b -inform DER -văn bản –

+0

@CamilleG. câu hỏi được cập nhật với đầu ra đó. Ngoài ra ném lỗi –

Trả lời

5

Khi nhập chuỗi chứng chỉ, công cụ khóa sẽ yêu cầu chứng chỉ được tải dưới dạng DER. Bạn có thể tạo ra như một bó với openssl:

1 - Chuyển đổi tất cả các chứng chỉ ở định dạng DER

openssl x509 -in certificate.pem -outform DER -out certificate.crt 

2 - concat tất cả các chứng DER thành một file duy nhất

cat cert1.crt cert2.crt ... > chain.der 

3 - Bây giờ bạn có thể nhập chuỗi vào kho khóa của bạn với keytool

keytool -importcert -trustcacerts -alias <myalias> -file chain.der -keystore keystore.jks -storepass <mypassword> 

Lưu ý rằng myaliasPHẢI giống nhau làm tài khoản được sử dụng khi khóa được tạo.

4 - xác minh rằng chuỗi đã được nhập thành công

keytool -list -v -keystore keystore.jks 
+0

Chứng chỉ này không phải là chứng chỉ của chính chúng tôi, mà là chứng chỉ nhận được từ khách hàng của chúng tôi. Tôi có nên hỏi khách hàng của mình bí danh họ đã sử dụng khi tạo khóa không? Và với câu hỏi được tạo chính bạn có nghĩa là yêu cầu ký chứng chỉ (CSR)? –

+0

Ngoài ra khi tôi xác minh tôi nhận được kết quả sau: 'Kho lưu trữ của bạn chứa 1 mục nhập'. Điều đó có đúng không? –

+0

Bạn có thể tìm thấy bí danh với lệnh danh sách keytool 'keytool -list -keystore keystore.jks'. 'Kho lưu trữ của bạn chứa 1 mục nhập' là tốt. Bí danh sẽ được in trên dòng tiếp theo: ', ngày 28 tháng 10 năm 2013, PrivateKeyEntry,' – Jcs

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