java.io.FileNotFoundException:(不允许操作)在 mac osx (el Capitan) 上使用 ./keytool -import 时出错 - Java 6

问题描述 投票:0回答:4

尝试将 CA 证书导入到我的 Java 6 信任库并遇到此错误:

./keytool -v -import -trustcacerts -alias Rapidssl -file /Users/spurr/Desktop/rapidssl.cer -keystore /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts
Enter keystore password:
Certificate was added to keystore
[Storing /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts]
keytool error: java.io.FileNotFoundException: /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts (Operation not permitted)
java.io.FileNotFoundException: /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts (Operation not permitted)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
at java.io.FileOutputStream.<init>(FileOutputStream.java:84)
at sun.security.tools.KeyTool.doCommands(KeyTool.java:902)
at sun.security.tools.KeyTool.run(KeyTool.java:172)
at sun.security.tools.KeyTool.main(KeyTool.java:166)

我也以 root 身份运行该命令,因此我认为我可以访问该 cacerts 密钥库位置。使用 Java 6。

java ssl ssl-certificate
4个回答
10
投票

我在启动 jnlp 文件时在 MacOS Big Sur 上遇到了类似的问题:

CouldNotLoadArgumentException[ Could not load file/URL specified: /Users/jhartman/Documents/Favorities/NCC/NCC 123.jnlp]
....
Caused by: java.io.FileNotFoundException: /Users/jhartman/Documents/Favorities/NCC/NCC 123.jnlp (Operation not permitted)

解决方案是:

  • 授予 Java (
    /usr/bin/java
    ) 全磁盘访问权限
  • 授予 Java (
    /usr/bin/java
    ) 文件和文件夹访问下载、文档和文件夹的权限

步骤

  1. 在 Finder 中打开
    /usr/bin
    ,例如通过从终端调用:
jhartman@MBP ~ % open /usr/bin
  1. 本地化

    java
    (和
    keytool

  2. 打开系统偏好设置安全与隐私。打开完整磁盘访问选项卡并授权

  3. 将步骤 1 中打开的 Finder 窗口中的

    java
    keytool
    拖放到 完整磁盘访问

    中的应用程序列表中

  1. 转到安全和隐私 -> 文件和文件夹,勾选
    java
    keytool
  2. 的下载文件夹和文档文件夹

这是我的问题的解决方案,但我希望它也能解决

keytool
问题。


5
投票

当异常状态为

(Operation not permitted)
-

时,这似乎是 mac 特定问题

对于遇到此问题的其他人,您需要重新启动 Mac 并在启动时按 ⌘+R。然后进入实用程序 > 终端并输入以下命令:

csrutil disable
reboot

随后您应该能够将 cacerts 导入您的 Java 密钥库。导入该 cacert 后,不要忘记重新启用

csrutil
。重启,开机时按⌘+R,Utilities > Terminal,输入:

csrutil enable
reboot

1
投票

我在 .metadata 目录下的文件中遇到了这个问题,因为我将 Eclipse 工作区放在了 Documents 下。通过进入“系统首选项”->“隐私”并添加对 Eclipse 的特定文件和文件夹的访问权限或提供 Eclipse 完整磁盘访问权限来解决此问题。


0
投票
  1. 复制文件并将其重命名为cacerts_backup
  2. 将 cacerts 复制到您的用户/下载(或任何您想要的)目录
  3. 修改cacerts文件
  4. 复制回来并替换原来的文件
© www.soinside.com 2019 - 2024. All rights reserved.