Tôi đã gặp sự cố này sau khi thêm kho lưu trữ maven có chứng chỉ SSL được ký bởi Tổ chức phát hành chứng chỉ không chuẩn (CA).
Khi chạy gradle xây dựng cho dự án của tôi từ dòng lệnh của tôi, mọi thứ hoạt động tốt (tôi đã thêm CA tùy chỉnh vào cac cài đặt Java máy của mình). Tôi có vấn đề chạy việc xây dựng từ Android studio tuy nhiên, và đã nhận được lỗi như thế này:
> Could not resolve joda-time:joda-time:2.9.9.
> Could not get resource 'https://custom-maven-repo.com/repository/releases/joda-time/joda-time/2.9.9/joda-time-2.9.9.pom'.
> Could not GET 'https://custom-maven-repo.com/repository/releases/joda-time/joda-time/2.9.9/joda-time-2.9.9.pom''.
> sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
> PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
> unable to find valid certification path to requested target
Tôi tải về các tập tin pem
cho CA tùy chỉnh, được gọi là my-ca.pem
. Tôi đã thử thêm tính năng này vào Android Studio ở Tùy chọn ->Công cụ ->Chứng chỉ máy chủ, nhưng điều đó không khắc phục được.
tôi nhận thấy rằng Android Studio sử dụng một JDK nhúng (file ->Cấu trúc dự án ->SDK Location ->JDK Location) tại /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home
. Để nhận được chứng chỉ được chấp nhận, tôi chạy (trên Mac OS X) các lệnh này để thêm chứng chỉ, sau đó giết quá trình java của Android Studio:
/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/keytool -import -alias my-ca -keystore /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -file path/to/my-ca.pem -noprompt
kill -9 $(ps -A | grep java | grep "Android Studio" | grep -v grep | awk '{print $1}')
Chạy chế độ gradle được xây dựng từ Android Studio sau đó hoạt động.
Một giải pháp thay thế là để thiết lập Android Studio để sử dụng một JDK tùy chỉnh sử dụng trên máy tính của bạn trong đó có các chứng chỉ CA được cài đặt, sử dụng menu trong file ->Cấu trúc dự án ->SDK Location - >JDK Location
Trong IntelliJ IDEA 15, hộp kiểm là ở đây: ** file> Settings ...> Tools> server Certificates> Chấp nhận chứng chỉ không đáng tin cậy tự động ** –
Bạn đang xuống bỏ phiếu câu trả lời của tôi, vì Tôi đã chọn để làm điều đó? Tôi không bao giờ nói bạn nên làm điều đó. Và nếu NSA muốn đẩy SDK mới vào môi trường dev của tôi, thì thế giới không còn đáng sợ nữa. –
Có. Nó ít tối ưu hơn việc thêm các chứng chỉ mà bạn cần. Khi một ai đó đến trang web và tìm kiếm giải pháp nhanh, lựa chọn đầu tiên của họ là thêm chứng chỉ thay vì tin tưởng một cách mù quáng vào tất cả các số – chrisortman