Tôi đang viết một ứng dụng Android yêu cầu xác thực ứng dụng khách SSL. Tôi biết cách tạo một kho khóa JKS cho một ứng dụng Java trên máy tính để bàn, nhưng Android chỉ hỗ trợ định dạng BKS. Mọi cách tôi đã cố tạo kết quả kho khóa trong lỗi sau:
handling exception: javax.net.ssl.SSLHandshakeException: null cert chain
Cách tạo một kho khóa Java có định dạng BKS (BouncyCastle) có chứa chuỗi chứng chỉ ứng dụng khách
Vì vậy, có vẻ như khách hàng không bao giờ gửi chuỗi chứng chỉ phù hợp, có lẽ vì tôi không tạo kho khóa đúng cách. Tôi không thể bật gỡ lỗi SSL như tôi có thể trên dekstop, do đó, điều này làm cho điều này khó khăn hơn nhiều so với nó.
Để tham khảo sau đây là lệnh đó đang làm việc để tạo ra một BKS truststore:
keytool -importcert -v -trustcacerts -file "cacert.pem" -alias ca -keystore "mySrvTruststore.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-145.jar" -storetype BKS -storepass testtest
Đây là lệnh tôi đã cố gắng có nghĩa là không làm việc để tạo ra một client BKS keystore:
cat clientkey.pem clientcert.pem cacert.pem > client.pem
keytool -import -v -file <(openssl x509 -in client.pem) -alias client -keystore "clientkeystore" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-145.jar" -storetype BKS -storepass testtest
Nghiêm túc không ai có kinh nghiệm với định dạng BKS? Argh, tại sao Android không thể sử dụng định dạng JKS chuẩn, hoặc ít nhất là tài liệu định dạng này vì tất cả chúng đều hỗ trợ? Điều này phải đơn giản ... –