Làm cách nào để thêm Mã hóa cho các chứng chỉ được phép của Java?


3

Gần đây tôi đã chuyển sang Let Encrypt Private Beta cho một số tên miền của mình và do đó, một số chương trình Java của tôi đã ngừng hoạt động vì chứng chỉ không có trong kho ủy thác mà tôi tin.

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: xây dựng đường dẫn PKIX không thành công: sun.security.provider.certpath.SunCertPathBuilderException: không thể tìm thấy đường dẫn chứng nhận hợp lệ

Tôi đã thử nhiều thứ, chẳng hạn như đi vào bảng cấu hình Java của Windows hoặc thêm chứng chỉ gốc vào các trích dẫn.

Làm cách nào để chúng tôi xuất / tải xuống tệp .csr hoặc .p12 từ CA Encrypt root CA để nhập nó vào danh sách chứng chỉ Java, tốt nhất là theo cách mà tất cả các miền được bảo mật của Encrypt được chấp nhận, không chỉ là miền của tôi?


Tôi đã thử tải xuống chứng chỉ gốc tại https://letsencrypt.org/certert/ và thêm chúng vào danh sách, nhưng không có kết quả. Tôi cũng đã thử thêm /etc/letsencrypt/live/<my_website>/cert.pemvào các trang web nhưng nó không hoạt động. Tôi thậm chí đã cố gắng thêm nó vào các cacerts bằng keytool bằng cách này: https://stackoverflow.com/questions/2138940/import-pem-into-java-key-store Bất kể tôi thử gì, nó không hoạt động ( lỗi tương tự ở trên xuất hiện).

Trong số các googling tôi đã thực hiện, tôi cũng đã tìm thấy điều này: https://community.letsencrypt.org/t/will-the-cross-root-cover-trust-by-the-default-list-in-the -jdk-jre / 134/13 nhưng không thể sử dụng thông tin bên trong nó.


CA Encrypt CA đã có trong kho chứng chỉ vì IE tin tưởng nó theo mặc định. Có một cái gì đó khác đang diễn ra.
Ramhound

Tôi đã tự mình tìm thấy câu trả lời, nhưng tôi vẫn bối rối về lý do tại sao nó không hoạt động. Một người bạn đã nói với tôi có thể là do máy chủ web của tôi không cung cấp chứng chỉ trung gian, nhưng tôi đã thử nó trên helloworld.letsencrypt.org và nó cũng không hoạt động.
Hay

Cập nhật: Theo Community.letsencrypt.org/t/ , DST Root CA X3 đã được thêm vào với các phiên bản 7u111 + và 8u101 + vào ngày 2016-07-19 do đó có thể không cần thêm chứng chỉ trên các phiên bản cập nhật của JDK / JRE 7 và 8.
Hay

Câu trả lời:


1

Tải xuống tất cả các chứng chỉ trên https://letsencrypt.org/certert/ (chọn định dạng der ) và thêm từng chứng chỉ bằng loại lệnh này (ví dụ cho letsencryptauthorityx1.der):

keytool -import -keystore PATH_TO_JDK\jre\lib\security\cacerts -storepass changeit -noprompt -trustcacerts -alias letsencryptauthorityx1 -file PATH_TO_DOWNLOADS\letsencryptauthorityx1.der

1

Cập nhật: Theo https://community.letsencrypt.org/t/which-browsers-and-operating-systems-support-lets-encrypt/4394 , DST Root CA X3 đã được thêm vào với các phiên bản 7u111 + và 8u101 + vào ngày 2016-07- Do đó, có thể không cần thêm chứng chỉ trên các phiên bản cập nhật của JDK / JRE 7 và 8.


Tôi đã sửa lỗi này bằng cách nhập Chứng chỉ trung gian ( https://letsencrypt.org/certert/ ) vào cửa hàng ủy thác (sử dụng keytool hoặc portecle, xem liên kết bên dưới). Rõ ràng, việc thêm chứng chỉ gốc "ISRG Root X1" không tự hoạt động, việc thêm tất cả các chứng chỉ khiến các lỗi biến mất.


Để đạt được điều này, tôi đã theo dõi câu trả lời phổ biến nhất của câu hỏi này: https://stackoverflow.com/questions/11617210/how-to-properly-import-a-'msign-certuler-into-java-keystore-that-is- avail nhưng nó cũng sẽ làm việc với https://stackoverflow.com/questions/2138940/import-pem-into-java-key-store


Bạn có hướng dẫn đơn giản cho việc này? Tôi đã làm sudo keytool -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -noprompt -importcert -file ~/Downloads/isrgrootx1.pemcho các certs ở đây letencrypt.org/certert . Có lỗi ở hai cái sau: keytool error: java.lang.Exception: Certificate not imported, alias <mykey> already existsnhưng bây giờ tôi nhận thấy rằng tôi cũng nhận được nó trên thư mục gốc nếu tôi cố gắng thêm nó vào iagain.
Viktor Hedefalk

Tôi đã không đi theo con đường này vì vậy nếu tôi làm lại từ đầu, tôi sẽ làm theo câu trả lời tại stackoverflow.com/questions/2138940/ , nhưng nhìn vào lệnh của bạn, đối số -alias ở đâu?
Hay

Cảm ơn. Vâng, tôi đã bỏ lỡ đối số -alias. Và sau đó, các tệp .pem không hoạt động với keytool nhưng tôi có thể sử dụng .der để giải quyết vấn đề.
Viktor Hedefalk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.