天天看點

利用jdk中的keytool生成證書。利用jdk中的keytool生成證書。

利用jdk中的keytool生成證書。

最近搭建單點登入CAS伺服器,需要安全證書。

找到一個教程如下:

  1. 使用第一個指令:keytool -genkey -alias cas -keyalg RSA -validity 999

    -keystore c:/etc/cas/thekeystore,這時候會在c盤生成thekeystore檔案。

  2. 執行指令:keytool -export -file /etc/cas/config/cas.crt -keystore指令:keytool -export -file /etc/cas/config/cas.crt -keystore c:/etc/cas/thekeystore -alias cas,這時候會生出一個交cas.crt的證書。
  3. 将證書導入到jre中: keytool -import -file /etc/cas/config/cas.crt -alias cas -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit,記住要加上jdk的預設密碼,也就是-storepass changeit。
  4. 記住證書生成後記得要修改host檔案,因為我們是自己生成的證書。修改host檔案其實就是将本地的ip對應到你剛才輸入的域名,也就是test .test.com

但是我在第二個步驟就遇到了一個問題

keytool 錯誤: java.io.FileNotFoundException:\etc\cas\config\cas.crt (系統找不到指定的路徑。)

原來需要自己先在\etc\cas\下建立一個config目錄

然後我在第三個步驟又遇到了兩個問題

  1. 非法選項: Files\Java\jdk1.7.0_79\jre\lib\security\cacerts

    這個不是太清楚原因,但是我通過CD到jdk安裝目錄下的\jre\lib\security,然後從目前目錄開始,%JAVA_HOME%/jre/lib/security/cacerts改為cacerts

    執行指令keytool -import -file /etc/cas/config/cas.crt -alias cas -keystore cacerts -storepass changeit,可以成功。

  2. keytool 錯誤: java.io.FileNotFoundException: cacerts (拒絕通路。)

    找到原因如下,C:\Program Files以及C:\Program Files(x86)都是隻有管理者權限才能通路的目錄,所有寫、修改操作都會遭遇”拒絕通路”。

    是以重新用管理者身份打開CMD