2013-02-02 28 views

Trả lời

4

Nếu bạn muốn bao gồm chứng chỉ CA, bạn nên thêm tùy chọn -trustcacerts.

Nếu bạn có nhiều chuỗi chứng chỉ trong một tệp PEM, bạn sẽ phải split the file.

+0

đó không phải là câu hỏi - làm cách nào để thêm nhiều tệp trong số họ từ một tệp? – Fakrudeen

+0

đã chỉnh sửa câu trả lời của tôi. – bowmore

+0

vâng - đó là những gì tôi đã làm cuối cùng. Tôi đã sử dụng csplit. – Fakrudeen

1

tôi muốn làm điều tương tự, nhưng dường như nó chỉ có thể nếu bạn đang nhập chính cũng như:

Có hai loại mục chính entries- và các mục cert tin cậy, và chỉ mục nhập quan trọng có thể chứa "chuỗi" chứng chỉ, đính kèm vào đó. Các mục cert đáng tin cậy là tất cả các mục cert duy nhất.

(https://www.java.net/node/674524#comment-709695)

Tôi thậm chí đã cố gắng converting to PKCS#7 format first, nhưng nó đã không làm việc, hoặc vì lý do nêu trên hoặc vì phiên bản của tôi về keytool đã quá cũ.

Vì vậy, phải đầu tiên chia các tập tin vào Certs riêng biệt:

cat certchain.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > ("cert" n ".pem")}' 

(https://serverfault.com/q/391396/58568)

Sau đó, nhập từng mã riêng.

+0

Lưu ý rằng để đúng, bạn sẽ cần dấu ngoặc đơn xung quanh chuỗi nối: '(" cert "n" .pem ")'. Nếu không có chúng, một số phiên bản của awk sẽ bị lẫn lộn (OS X, anyway). – eaj

+0

Đã cập nhật, cảm ơn! – bmaupin

8

Một bash script mà sẽ nhập khẩu tất cả các chứng từ một tập tin PEM:

#!/bin/bash 
PEM_FILE=$1 
PASSWORD=$2 
KEYSTORE=$3 
# number of certs in the PEM file 
CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l) 

# For every cert in the PEM file, extract it and import into the JKS keystore 
# awk command: step 1, if line is in the desired cert, print the line 
#    step 2, increment counter when last line of cert is found 
for N in $(seq 0 $(($CERTS - 1))); do 
    ALIAS="${PEM_FILE%.*}-$N" 
    cat $PEM_FILE | 
    awk "n==$N { print }; /END CERTIFICATE/ { n++ }" | 
    keytool -noprompt -import -trustcacerts \ 
      -alias $ALIAS -keystore $KEYSTORE -storepass $PASSWORD 
done 

Ví dụ:

./jks_import_pem TrustedCAs.PEM changeit truststore.jks 
Các vấn đề liên quan