2010-12-13 32 views
7

Mac OS X có kho khóa CA trong /System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts. Keystore này dường như bị ghi đè bởi mọi bản cập nhật Java, điều này rất khó chịu vì chúng tôi có CA nội bộ cho môi trường phát triển, thử nghiệm ...Làm thế nào để bảo toàn kho khóa CAcerts trên Mac trong các bản cập nhật?

Có cách nào để bảo toàn thay đổi của kho khóa trên Apple JSRs, và bây giờ, với Snow Leo JSR3, cũng trên các bản cập nhật cho các gói nhà phát triển Java riêng biệt (có JDK sử dụng cùng một kho khóa) không?

Trả lời

6

/System/Library/Frameworks/JavaVM.framework/Home/ là liên kết tượng trưng đến Versions/CurrentJDK/Home trong JavaVM.framework. Rõ ràng điều này sẽ thay đổi với một phiên bản mới. Sử dụng đường dẫn đầy đủ (ví dụ: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home) và đường dẫn sẽ không thay đổi trên các bản cập nhật.

3

Các thông số sau đây có thể được sử dụng để xác định vị trí của cacerts nộp cho java:

-Djavax.net.ssl.trustStore=<cacerts.location> 
-Djavax.net.ssl.trustStorePassword=changeit 

Tạo một bản sao của cacerts trong thư mục java nhà (với nội CA) và đặt nó ở đâu đó trong bạn thư mục chính. Sau đó đặt đường dẫn đầy đủ đến vị trí tệp cacerts làm giá trị của thuộc tính javax.net.ssl.trustStore ở trên. Bản sao đó sẽ không bị ghi đè bởi các bản cập nhật Java. Mật khẩu mặc định là 'thay đổi'.

Hai nhược điểm để phương pháp này là:

  • tập tin của bạn sẽ không nhận được bất kỳ thông tin cập nhật đến tập tin cacerts trong sdk. Đây là vấn đề chủ yếu nếu cơ quan cấp chứng chỉ bị xâm nhập.
  • Ở mọi nơi bạn cần các cacerts tùy chỉnh (công cụ xây dựng, máy chủ ứng dụng, v.v ...), các thông số này cần được chỉ định.
+0

Thú vị ... nhưng một vấn đề khác là mật khẩu kho khóa sẽ được hiển thị cho bất kỳ người dùng nào có thể liệt kê các quy trình trên máy đó. –

+1

Bạn có nghĩa là mật khẩu lưu trữ tin cậy, phải không? Đó là một vấn đề nhưng nó có thể được giảm nhẹ bằng cách làm một cái gì đó tương tự như những gì tôi đề xuất ở đây cho vượt qua keystore: http://stackoverflow.com/a/10645013/290918 – kldavis4

2

Dường như mọi thứ đã thay đổi trong Mac OS X 10.6.8 Snow Leopard. Bây giờ /System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts là một liên kết tượng trưng đến /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts, điều này sẽ không thay đổi khi cập nhật, nếu chúng tôi may mắn.

Các vấn đề liên quan