2013-10-17 90 views
13

我正在尝试使用the instructions in this article来发现我的Java运行时中的可信权限列表。当我键入以下命令:Keytool不被识别为内部或外部命令

C:\ColdFusion8\runtime\jre\lib>keytool -list -storepass changeit -noprompt -keystore 

我得到了以下错误:

'keytool' is not recognized as an internal or external command, operable program or batch file.

我检查了包含我的密钥工具可执行文件的目录是在路径。 (在我的Windows 7机器上,它位于C:\Program Files (x86)\Java\jre6\bin) 尽管如此,命令行将不会识别keytool命令。

我假设有在doc提到的两个分开的命令:

  1. C:\CFusionMX\runtime\jre\lib>keytool -list -storepass changeit -noprompt -keystore

  2. C:\CFusionMX\runtime\jre\lib\security\cacerts

编辑:

顺便说一句,我可以使用下面的过程而不是复杂的步骤在答案中提到?

  1. 当我打开WSDL到我的浏览器,我看到了锁的图标,当我点击它的“证书”窗口中打开
  2. 然后我点击“安装证书”选项

  3. 一个证书导入向导窗口中打开,我点击下一步,我看到两个选项

    • 一)自动选择根据证书类型的证书存储(此选项被自动选中)
    • B)将所有证书放在以下存储

我决定选择选项(b),但我很困惑哪一个证书存储我应该选择这里。

+0

仅供参考,当你得到这个错误与可执行文件,始终运行' dir“来验证路径,例如'c:/ current/path> dir C:\ ColdFusion8 \ runtime \ jre \ lib \ keytool.exe'。 (这会告诉你keytool.exe的路径是错误的,正如Miguel-F指出的那样) – Leigh

+0

嗨,Leigh,你认为上面提到的替代方法会起作用吗? – Jack

+0

AFAIK,IE默认使用自己独立的密钥库,所以我的直觉是说“不”。但我真的不确定。我不使用IE很多。这可能取决于IE列表/是否可以访问您尝试使用的Java存储。也就是说,我不确定通过命令行添加证书的过程如此复杂:)只需使用正确的.exe路径,即可开始工作。 – Leigh

回答

17

您正在收到该错误,因为keytool可执行文件位于bin目录下,而不是您示例中的lib目录。您还需要在命令行中添加keystore的位置。有一个很好的参照这一切在这里 - Jrun Help/Import certificates | Certificate stores | ColdFusion

The default truststore is the JRE's cacerts file. This file is typically located in the following places:

  • Server Configuration:

    cf_root/runtime/jre/lib/security/cacerts

  • Multiserver/J2EE on JRun 4 Configuration:

    jrun_root/jre/lib/security/cacerts

  • Sun JDK installation:

    jdk_root/jre/lib/security/cacerts

  • Consult documentation for other J2EE application servers and JVMs


The keytool is part of the Java SDK and can be found in the following places:

  • Server Configuration:

    cf_root/runtime/bin/keytool

  • Multiserver/J2EE on JRun 4 Configuration:

    jrun_root/jre/bin/keytool

  • Sun JDK installation:

    jdk_root/bin/keytool

  • Consult documentation for other J2EE application servers and JVMs

所以,如果你导航到keytool可执行文件位于您的命令行会看起来像这样的目录:

keytool -list -v -keystore JAVA_HOME\jre\lib\security\cacert -storepass changeit 

您需要提供路径信息,具体取决于您从哪里运行keytool命令以及证书文件所在的位置。

此外,请确保您正在更新ColdFusion正在使用的正确cacerts文件。如果您在该服务器上安装了多个JRE,您可以在“系统信息”下验证管理员使用的JRE ColdFusion。寻找Java Home行。

+0

感谢您的回答。你认为我在我的问题中添加的替代选项会起作用吗?如果是的话,你能回答我在那边问过的问题吗?试图避免上述所有复杂的步骤。 – Jack

+0

注意,如果不明显,“changeit”只是默认密码。出于安全原因,它应该被更改为更安全的东西。 – Leigh

+0

@nitantkumar - 不,IE使用它自己的密钥仓库与java密钥仓库不一样。您可以从IE导出证书,并将其保存为DER格式。然后,您将该文件导入(使用keytool)到Java密钥库中。这并不复杂。 –

4

运行CMD为以管理员身份运行这个工作对我来说

1

执行以下命令:

set PATH="C:\Program Files (x86)\Java\jre7"

(取JRE在64位的情况下存在)。

由于您的Java路径未设置,所以您可以在命令行执行此操作,然后执行keytool导入命令。

21
  1. 添加你的JDK的/bin中文件夹到PATH环境变量。你可以,或者通过CLI在系统设置>环境变量做到这一点:

    set PATH=%PATH%;C:\Program Files\Java\jdk1.7.0_80\bin 
    
  2. 关闭并重新打开命令行窗口

+0

嗯,我的关闭/打开cmd窗口后不会留下 – pete

+0

我请记住,这救了我的生命:DI再次遇到问题,这又有助于我,我没有找到任何其他解决方案可以帮助我。非常感谢你分享这个。 @pete请确保你添加了正确的jdk版本,对我来说它是C:\ Program Files \ Java \ jdk1.8.0_73 \ bin –

+0

Keytool是否会为JRE和JDK导入证书,或者需要单独运行keytool对彼此而言? –

相关问题