2013-10-17 143 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對彼此而言? –

相關問題