Tomcat (1) —— Mac下配置Tomcat Https/SSL
tomcat版本: tomcat-8.0.29
jdk版本: jdk1.8.0_65
參考來(lái)源:
SSL/TLS Configuration HOW-TO
【高可用HA】Apache (2) —— Mac下安裝多個(gè)Apache Tomcat實(shí)例
完美配置Tomcat的HTTPS
兩步搞定 Tomcat 下啟用 https:// 訪問(wèn)
tomcat下配置https環(huán)境
安裝與配置
首先
參照博文配置好單個(gè)Tomcat實(shí)例作為https的目標(biāo)測(cè)試服務(wù)環(huán)境,。"./servers/cluster/tomcat/node-c"
【高可用HA】Apache (2) —— Mac下安裝多個(gè)Apache Tomcat實(shí)例
配置證書(shū)
1. 創(chuàng)建證書(shū)
證書(shū)是單點(diǎn)登錄認(rèn)證系統(tǒng)中很重要的一把鑰匙,客戶端于服務(wù)器的交互安全靠的就是證書(shū),;本教程由于是演示所以就自己用JDK自帶的keytool工具生成證書(shū),;如果以后真正在產(chǎn)品環(huán)境中使用肯定要去證書(shū)提供商去購(gòu)買,證書(shū)認(rèn)證一般都是由VeriSign認(rèn)證,,中文官方網(wǎng)站:http://www./cn/
先查看當(dāng)前JAVA_HOME的jdk版本:
$ java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
* 注意以下提示輸入服務(wù)器域名的時(shí)候不能用IP地址
用JDK自帶的keytool工具生成證書(shū):
$ keytool -genkey -alias hoau -keyalg RSA -keystore /Users/Richard/Documents/Dev/servers/cluster/tomcat/keys/hoaukey
輸入密鑰庫(kù)口令:
再次輸入新口令:
您的名字與姓氏是什么?
[Unknown]: sso.
您的組織單位名稱是什么?
[Unknown]:
您的組織名稱是什么?
[Unknown]: sso
您所在的城市或區(qū)域名稱是什么?
[Unknown]: Shanghai
您所在的省/市/自治區(qū)名稱是什么?
[Unknown]: Shanghai
該單位的雙字母國(guó)家/地區(qū)代碼是什么?
[Unknown]: CN
CN=sso., OU=, O=sso, L=Shanghai, ST=Shanghai, C=CN是否正確?
[否]: y
輸入 <hoau> 的密鑰口令
(如果和密鑰庫(kù)口令相同, 按回車):
* 關(guān)于以上問(wèn)題參數(shù)的說(shuō)明
單點(diǎn)登陸服務(wù)器的域名:
您的名字與姓氏是什么?
[Unknown]: sso.
公司的名稱:
您的組織單位名稱是什么?
[Unknown]:
單點(diǎn)登陸服務(wù)名稱:
您的組織名稱是什么?
[Unknown]: sso
所在地及國(guó)別:
您所在的城市或區(qū)域名稱是什么?
[Unknown]: Shanghai
您所在的省/市/自治區(qū)名稱是什么?
[Unknown]: Shanghai
該單位的雙字母國(guó)家/地區(qū)代碼是什么?
[Unknown]: CN
最后輸入客戶端所用密鑰(Hoau123):
輸入 <hoau> 的密鑰口令
(如果和密鑰庫(kù)口令相同, 按回車):
如果出現(xiàn)如下錯(cuò)誤:
keytool 錯(cuò)誤: java.io.FileNotFoundException: /Users/Richard/Documents/Dev/servers/cluster/tomcat/keys/hoaukey (No such file or directory)
這可能是因?yàn)槟繕?biāo)路徑上文件不存在,。
如果出現(xiàn)如下錯(cuò)誤:
keytool 錯(cuò)誤: java.io.FileNotFoundException: /Users/Richard/Documents/Dev/servers/cluster/tomcat/keys/hoaukey (Is a directory)
這是因?yàn)閔oaukey是文件目錄,,將其刪除即可。
2. 導(dǎo)出證書(shū)
:tomcat Richard$ keytool -export -file ./keys/hoau.crt -alias hoau -keystore ./keys/hoaukey
輸入密鑰庫(kù)口令:
存儲(chǔ)在文件 <./keys/hoau.crt> 中的證書(shū)
3. 為客戶端的JVM導(dǎo)入證書(shū)
$ sudo keytool -import -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/lib/security/cacerts -file ./keys/hoau.crt
運(yùn)行結(jié)果(此處密鑰庫(kù)口令與之前生成的口令相同)
輸入密鑰庫(kù)口令:
再次輸入新口令:
所有者: CN=sso., OU=, O=sso, L=Shanghai, ST=Shanghai, C=CN
發(fā)布者: CN=sso., OU=, O=sso, L=Shanghai, ST=Shanghai, C=CN
序列號(hào): 54668c91
有效期開(kāi)始日期: Thu Dec 10 10:30:57 CST 2015, 截止日期: Wed Mar 09 10:30:57 CST 2016
證書(shū)指紋:
MD5: 13:40:A0:58:44:73:95:C5:DD:5B:3F:A9:75:07:EF:9C
SHA1: 31:06:8C:A7:68:34:BE:A1:28:11:DE:27:3E:62:58:58:D7:D5:C1:56
SHA256: AC:6F:B2:DE:AC:69:D0:D6:BF:E6:A6:CD:BE:DF:EE:EA:79:17:FA:61:20:8D:06:24:E1:4B:00:55:5F:D9:65:BE
簽名算法名稱: SHA256withRSA
版本: 3
擴(kuò)展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 22 7B 1A C9 78 B8 F8 B3 0B 3A F5 30 DF A9 D7 B9 "...x....:.0....
0010: FB E4 32 3D ..2=
]
]
是否信任此證書(shū)? [否]: y
證書(shū)已添加到密鑰庫(kù)中
可能會(huì)出現(xiàn)錯(cuò)誤
keytool 錯(cuò)誤: java.io.IOException: Keystore was tampered with, or password was incorrect
可以通過(guò)查看路徑設(shè)置是否正確或查看jdk下security目錄下的cacerts文件是否存在,,如果存在可以通過(guò)rename的方式,,將其改名。
配置服務(wù)器
打開(kāi)"./tomcat/node-c/conf/server.xml"
將原來(lái)被注釋掉的SSL相關(guān)配置修改成:
<Connector port="8433" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/Users/Richard/Documents/Dev/servers/cluster/tomcat/keys/hoaukey" keystorePass="Hoau123"/>
*注意,,此處我們將SSL的端口從"8443"修改成了"8433"
配置系統(tǒng)環(huán)境
在創(chuàng)建證書(shū)證書(shū)的時(shí)候,我們指定的服務(wù)器域名為sso.,。為了能使本地瀏覽器
通過(guò)域名能正常訪問(wèn),,我們需要修改增加host配置
127.0.0.1 sso.
運(yùn)行
執(zhí)行命令
:node-c Richard$ ./bin/startup.sh
提示錯(cuò)誤
-bash: ./bin/startup.sh: Permission denied
運(yùn)行命令
sudo chmod +x ./bin/*.sh
再啟動(dòng)
$ ./bin/startup.sh
停止命令為
$ ./bin/startup.sh
*此時(shí)可能會(huì)在catalina的log中出現(xiàn)如下錯(cuò)誤
10-Dec-2015 11:03:35.473 SEVERE [main] org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore Failed to load keystore type JKS with path /Users/Richard/.keystore due to /Users/Richard/.keystore (No such file or directory)
java.io.FileNotFoundException: /Users/Richard/.keystore (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
可能的原因有兩個(gè)
- 注意SSL配置中的關(guān)鍵字key值都是區(qū)分大小寫的,比如"keystoreFile"和"keystorePass" ,。
- 注意確認(rèn)"keystoreFile"和"keystorePass"相關(guān)參數(shù)路徑的正確性,。
測(cè)試
用瀏覽器訪問(wèn)https://sso.:8433,會(huì)出現(xiàn)結(jié)果:
結(jié)束
|