Có rất nhiều câu hỏi(câu hỏi 1, câu hỏi 2) trên Stackoverflow về cách chuyển đổi kho khóa JKS sang kho khóa BKS(một định dạng kho khóa được cung cấp bởi BouncyCastle) bằng Java keytool.
Lý do tại sao việc chuyển đổi này có rất nhiều câu hỏi là vì BKS không phải là định dạng kho khóa được hỗ trợ bởi Java SE, nó là một định dạng kho khóa của bên thứ ba. Để chuyển đổi JSK sang BKS, nhà cung cấp BKS phải được tải xuống trước. Và một vài tùy chọn khác cần được thêm vào khi chạy lệnh keytool.
Lệnh điển hình để chuyển đổi kho khóa JKS sang kho khóa BKS sẽ trông như bên dưới:
keytool -importkeystore -srckeystore testkeys -srcstoretype JKS -srcstorepass passphrase -destkeystore testkeys.bks -deststoretype BKS -deststorepass password -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath [PARENT_DIRECTORY_PATH]\bouncycastle\bcprov-jdk15on-152.jar
Hai tùy chọn quan trọng là -provider và -providerpath. Tùy chọn -provider cho JVM biết dịch vụ kho khóa BKS được đăng ký ở đâu và -providerpath cho JVM biết vị trí của nhà cung cấp.
Với điều này, sẽ không có vấn đề gì để chuyển đổi kho khóa JKS sang kho khóa BKS. Một ví dụ được hiển thị bên dưới.
Trước khi chuyển đổi, kho khóa JKS chứa các mục bên dưới:
Sau khi chuyển đổi, kho khóa BKS chứa các mục bên dưới:
Lệnh sẽ tương tự nếu bạn muốn chuyển đổi giữa các định dạng kho khóa khác nhau.
Problem importing entry for alias capistore: java.security.KeyStoreException: java.io.IOException: Error initialising store of key store: java.security.InvalidKeyException: Illegal key size.
I keep getting the above error, any help would be appriciated