以下是相關的Tomcat,JDK和Windows環境:
Tomcat版本:tomcat-7.0.55
JDK版本: jdk1.6.0
目錄所在的位置:
Serve的目錄:D:\server\tomcat-7.0.55\
JDK的目錄:D:\jdk\jdk1.6.0
1、生成服務器的密匙文件casserver.keystore
1)打開CMD切換到Serve的目錄下面D:\Server\tomcat\下
2)執行:keytool -genkey -alias casserver -keypass cas123 -keyalg RSA -keystore casserver.keystore -validity 365
說明:
-alias指定別名為casserver;
-keyalg指定RSA算法;
-keypass指定私鑰密碼;
-keystore指定密鑰文件名稱為casserver.keystore;
-validity指定有效期為365天。
另外提示輸入密匙庫口令應與-keypass指定的cas123相同;您的名字與姓氏fron.com是CAS服務器使用的域名(不能是IP,也不能是localhost),其它項隨意填。
注意:
服務器上如果有多個JDK,請確認環境變量中的JDK路徑為tomcat所使用的JDK,
如果不在環境變量中,也可切換到指定JDK的bin目錄下執行命令;提示的輸入keystore密碼應與-keypass必須與指定的相同,
否則后面tomcat啟動會報IO異常(Cannot recover key)。
命令執行成功后Server目錄下多出casserver.keystore文件。
3)可以看到Tomcat 下面生成casserver.keystore
2.生成服務端證書casserver.cer
1)根據上面導出的casserver.keystore文件就可以生成casserver.cer文件,只需在原來的Serve的目錄下面D:\Server\tomcat\下執行:
keytool -export -alias casserver -storepass cas123 -file casserver.cer -keystore casserver.keystore
說明:
-alias指定別名為casserver;
-storepass指定私鑰為liuqizhi;
-file指定導出證書的文件名為casserver.cer;
-keystore指定之前生成的密鑰文件的文件名。
注意:-alias和-storepass必須為生成casserver.keystore密鑰文件時所指定的別名和密碼,否則證書導出失敗
2)執行上面命令后發現多了casserver.cer文件
3.導入證書文件到cacerts 密鑰庫文件
接下來就是把上面生成的服務器的證書casserver.cer導入到cacerts密鑰庫文件中(后面的客戶端會用到這些)
keytool -import -trustcacerts -alias casserver -storepass cas123 -file casserver.cer –keystore cacerts
命令執行成功后Server目錄下多出cacerts文件。
4.服務端Tomcat配置
在制作完成密鑰文件、證書文件、密鑰庫文件后即可進行服務端Tomcat的配置。打開$CATALINA_HOME/conf/server.xml
<!--keystoreFile 生成的安全證書的位置-->
<!--keystorePass設置安全證書的密碼-->
<Connector protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="D:\server\tomcat-7.0.55\casserver.keystore"
keystorePass="cas123"
port="443" />
說明:
port一般為8443或443,最常用的是443端口(https默認端口),
這樣https方式訪問的時候可以不加端口號(如:https://sso.demo.com/cas/login);
keystoreFile為tomcat目錄下的密鑰文件;
keystorePass為私鑰密碼;truststoreFile為生成的信任文件,
如果此處不指定則默認為$JAVA_HOME/jre/lib/security/cacerts文件;其它屬性默認即可。
5.生成客戶端密鑰庫文件
單向認證的客戶端配置只需生成客戶端信任文件caserts即可。
首先將服務端生成的證書文件(之前生成的casserver.cer文件)復制到$JAVA_HOME/jre/lib/security下,
然后打開CMD窗口切換到$JAVA_HOME/jre/lib/security下並執行命令:
keytool -import -trustcacerts -alias casclient -storepass changeit -file casserver.cer -keystore cacerts
命令執行成功后JDK目錄/jre/lib/security下多出cacerts文件。
6.客戶端應用配置
TOMCAT修改
tomcat\conf\ server.xml 修改片斷
<!--keystoreFile 生成的安全證書的位置-->
<!--keystorePass設置安全證書的密碼-->
<Connector protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="D:\server\tomcat-7.0.55\casserver.keystore"
keystorePass="cas123"
port="443"/>
7.常見配置錯誤
1)keytool 生成安全證書不能使用IP地址 一律使用域名
2)務必確認客戶端程序使用JDK 路徑正確 分清楚JDK、JRE