隻使用步驟1和4的話僅服務端認證
1.為tomcat生成證書,别名tomcat
keytool -genkey -v -alias tomcat -keyalg rsa -keystore d:\home\tomcat.keystore -validity 36500 (機關天)
您的名字與姓氏是什麼?”這是必填項,并且必須是tomcat部署主機的域名或者ip[如:gbcom.com 或者 10.1.25.251](就是你将來要在浏覽器中輸入的通路位址),否則浏覽器會彈出警告視窗,提示使用者證書與所在域不比對。在本地做開發測試時,應填入“localhost”。
2.為用戶端生成證書并導入浏覽器
了能将證書順利導入至ie和firefox,證書格式應該是pkcs12
keytool -genkey -v -alias mykey -keyalg rsa -storetype pkcs12 -keystore d:\home\mykey.p12
輕按兩下mykey.p12檔案,即可将證書導入至浏覽器(用戶端)
3.讓伺服器信任用戶端證書
由于不能直接将pkcs12格式的證書庫導入,必須先把用戶端證書導出為一個單獨的cer檔案,使用如下指令:
keytool -export -alias mykey -keystore d:\home\mykey.p12 -storetype pkcs12 -storepass 123456 -rfc -file d:\home\mykey.cer (mykey為自定義與用戶端定義的mykey要一緻)
用戶端證書就被我們導出到“d:\home\mykey.cer”檔案了
下一步,是将該檔案導入到伺服器的證書庫,添加為一個信任證書使用指令如下:
keytool -import -v -file d:\home\mykey.cer -keystore d:\home\tomcat.keystore
通過list指令檢視伺服器的證書庫,可以看到兩個證書,一個是伺服器證書,一個是受信任的用戶端證書:
keytool -list -keystore d:\home\tomcat.keystore
顯示結果如下:
您的密鑰庫包含 2 個條目
tomcat, 2016-7-20, privatekeyentry,
證書指紋 (sha1): 55:69:06:a0:64:af:7c:58:ca:63:88:d2:30:b9:2b:64:cd:1c:65:4b
mykey, 2016-7-20, trustedcertentry,
證書指紋 (sha1): 9d:84:35:f0:f6:31:96:02:9e:9e:4d:7a:19:11:78:87:84:8a:e8:9f
4.讓用戶端信任伺服器證書
先把伺服器證書導出為一個單獨的cer檔案,使用如下指令:
keytool -keystore d:\home\tomcat.keystore -export -alias tomcat -file d:\home\tomcat.cer (tomcat為你設定伺服器端的證書名)。
輕按兩下tomcat.cer檔案,按照提示安裝證書,将證書安裝到“受信任的根證書頒發機構”存儲區
5.配置tomcat伺服器
下面是單向認證(伺服器端認證)配置
打開tomcat根目錄下的/conf/server.xml,找到connector port="8443"配置段,修改為如下:
<connector port="8443" protocol="org.apache.coyote.http11.http11protocol"
sslenabled="true" maxthreads="150" scheme="https"
secure="true" clientauth="false" sslprotocol="tls"
keystorefile="d:\\home\\tomcat.keystore" keystorepass="123456"/>
參數說明:
clientauth:設定是否雙向驗證,預設為false(僅服務端認證),設定為true代表雙向驗證
keystorefile:伺服器證書檔案路徑
keystorepass:伺服器證書密碼
truststorefile:用來驗證用戶端證書的根證書,此例中就是伺服器證書
truststorepass:根證書密碼
https通路的時候需要帶上端口号8443
--------------------tomcat配置https通路不需要端口号------------------
一般tomcat預設的ssl端口号是8443,但是對于ssl标準端口号是443,這樣在通路網頁的時候,直接使用https而不需要輸入端口号就可以通路
1. 将non-ssl http/1.1 connector中的redirectport端口号改為:443
2. ssl http/1.1 connector修改端口号為443
3. ajp 1.3 connector 中的 redirectport改為443
-------------------強制使用https-------------------------
tomcat /conf/web.xml 中</welcome- file-list> 後面加上這
<login-config>
<!-- authorization setting for ssl -->
<auth-method>client-cert</auth-method>
<realm-name>client cert users-only area</realm-name>
</login-config>
<security-constraint>
<web-resource-collection >
<web-resource-name >ssl</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>confidential</transport-guarantee>
</user-data-constraint>
</security-constraint>