1.認證簡介
ssl作爲一個加密的協議,協議棧位於tcp協議之上,主要用來進行傳輸過程中的加密,加密的過程就涉及到證書相關的配置,本文重在講解配置。
tomcat默認的https端口是8443。
簡要描述一下,ssl握手的過程
a.客戶端發送client hello ,主要包括客戶端支持的ssl協議和客戶端支持的加密算法。
b.服務器將支持的協議、從客戶端列表選取的加密協議、服務器的證書發送給客戶端,如果是雙向的,服務器會要求客戶端提供證書。
c、客戶端校驗證書是否過期、證書的頒發機構是否是瀏覽器中註冊的證書頒發機構。如果不是,則給出提示信息.
d.客戶端和服務器進行相應的加密和解密完成握手(寫的比較粗略)
2.模擬環境
客戶端:window7(X64) 谷歌瀏覽器(火狐瀏覽器可能有些問題) 證書儲存路徑:C:\Users\kefan\Desktop\conf
服務器端(centos7 64) tomcat7 /home/tomcat/apache-tomcat-7.0.75/keys
3.步驟
3.1單向認證
3.1.1服務器生成祕鑰庫(tomcat.keystore)
keytool -genkey -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -dname "CN=192.168.233.133,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass tomcat -keypass tomcat
3.1.2服務器生成頒發給客戶端的證書文件(選配tomcat.cer)
keytool -export -alias tomcat -keystore tomcat.keystore -file tomcat.cer -storepass tomcat
3.1.3修改tomcat的配置文件(server.xml)
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="keys/tomcat.keystore"
keystorePass="tomcat"
truststoreFile="keys/tomcat.keystore"
truststorePass="tomcat"/>3.1.4測試
由於證書的頒發機構不是瀏覽器的根證書頒發機構,所以需要添加到信任列表中才能訪問
3.1.5爲了避免瀏覽器的添加信任可以選擇導入3.1.2生成的證書文件(tomcat.cer)
上個步驟中,由於證書的頒發機構不存在與瀏覽器的根證書頒發機構,所以給出了警告,取消這個警告,需要將服務器頒發的證書添加到瀏覽器的根證書頒發機構中,將tomcat.cer下載到客戶端,安裝,在選擇證書存儲時,選擇受信任的根證書頒發機構,導入完成之後,重啓瀏覽器,不出現警告信息。
3.2雙向認證
3.1.1服務器生成祕鑰庫(tomcat.keystore)
keytool -genkey -v -alias tomcat -keyalg RSA -validity 3650 -keystore tomcat.keystore -dname "CN=192.168.233.133,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass tomcat -keypass tomcat
3.1.2服務器生成頒發給客戶端的證書文件(tomcat.cer)
keytool -export -alias tomcat -keystore tomcat.keystore -file tomcat.cer -storepass tomcat
3.1.3客戶端生成祕鑰庫(client.p12)
keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -dname "CN=192.168.233.1,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass client -keypass client
3.1.4客戶端生成頒發給服務器端的證書文件(client.cer)
keytool -export -alias client -keystore client.p12 -storetype PKCS12 -storepass client -rfc -file client.cer
3.1.5服務器導入客戶端頒發的證書文件(tomcat.truststore)
keytool -import -v -file client.cer -keystore tomcat.truststore -storepass tomcat
3.1.6客戶端添加祕鑰庫到瀏覽器(client.p12)
選擇證書存儲時,分別添加個人和受信任的根證書頒發機構.
3.1.7客戶端添加服務器頒發的證書(tomcat.cer)
同單向配置中的導入選項。
3.1.8修改tomcat的配置文件
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="true"
sslProtocol="TLS"
keystoreFile="keys/tomcat.keystore"
keystorePass="tomcat"
truststoreFile="keys/tomcat.truststore"
truststorePass="tomcat"/>