Tôi tạo CA và chứng chỉ với cfssl
nhưng tôi không thể nhập chứng chỉ vào kho khóa JAVA với công cụ quan trọng
.
Chứng chỉ được tạo có tương thích với triển khai keycert/Java x509 không? Hay tôi đang làm gì đó sai?
Tạo CA
# tạo my-ca{,-key}.pem
csr mặc định in cfssl \
| cfssl gencert -initca - \
| cfssljson -bare my-ca
#nhập ca
keytool -importcert -alias my-ca -file my-ca.pem -storepass changeit -noprompt
Lưu ý: keytool -importcert hoạt động tốt trong trường hợp này
Tạo chứng chỉ
con mèo cfssl.json
#{
# "ký tên": {
# "mặc định": {
# "hết hạn": "87600h",
# "cách sử dụng": ["ký", "mã hóa khóa", "xác thực máy chủ", "xác thực máy khách"]
# }
# }
#}
# tạo chứng chỉ
tiếng vang {} \
| cfssl gencert -ca=my-ca.pem -ca-key=my-ca-key.pem -config=cfssl.json -hostname=my-host - \
| cfssljson -bare my-host
# giấy chứng nhận nhập khẩu
keytool -importcert -file my-host.pem -alias my-host -storepass changeit -noprompt
Nhưng bây giờ, nó trả lời với:
lỗi keytool: java.lang.Exception: Đầu vào không phải chứng chỉ X.509
Điều này làm tôi bối rối. Openssl có vẻ hài lòng với chứng chỉ:
openssl x509 -text -in my-host.pem
# đầu ra có vẻ ổn, ecdsa-with-SHA256, xem ý chính
openssl x509 -in my-host.pem \
| diff my-host.pem -
# không có sự khác biệt giữa x509 được tạo lại
-đầu ra văn bản
Quan sát thêm: CURL và trình duyệt web đều ổn khi lấy chứng chỉ. Chỉ các ứng dụng Java phàn nàn.
Thông tin:
phiên bản cfssl
#Phiên bản: 1.2.0
# Sửa đổi: nhà phát triển
#Thời gian chạy: go1.8.1
java --version
#openjdk 14.0.2 2020-07-14
Môi trường thời gian chạy #OpenJDK (bản dựng 14.0.2+12-Ubuntu-120.04)
#OpenJDK 64-Bit Server VM (bản dựng 14.0.2+12-Ubuntu-120.04, chế độ hỗn hợp, chia sẻ)
keytool -showinfo -tls
# xem ý chính để biết đầu ra đầy đủ
-showinfo -tls