1. 程式人生 > >配置tomcat支援ssl

配置tomcat支援ssl

windows下:

1.獲取證書和配置tomcat

java-jdk提供一個簡單的製作證書的工具,你可以用它來產生一個證書做測試用:

1.先來到你的jdk/bin下

2.執行

keytool -genkey -alias tomcat -keyalg RSA -keystore F:\tomcat.keystore -validity 36500 


其中F:\tomcat.keystore表示儲存到你的F盤下檔名為tomcat.keystore,365表示1年,36500表示100年
如下:
A、輸入keystore密碼:此處需要輸入大於6個字元的字串 


B、“您的名字與姓氏是什麼?”這是必填項,並且必須是TOMCAT部署主機的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你將來要在瀏覽器中輸入的訪問地址 


C、“你的組織單位名稱是什麼?”、“您的組織名稱是什麼?”、“您所在城市或區域名稱是什麼?”、“您所在的州或者省份名稱是什麼?”、“該單位的兩字母國家程式碼是什麼?”可以按照需要填寫也可以不填寫直接回車,在系統詢問“正確嗎?”時,對照輸入資訊,如果符合要求則使用鍵盤輸入字母“y”,否則輸入“n”重新填寫上面的資訊 


D、輸入<tomcat>的主密碼,這項較為重要,會在tomcat配置檔案中使用,建議輸入與keystore的密碼一致,設定其它密碼也可以 
3.完成後在對應的地址產生證書檔案
4.配置你的Tomcat
找到你的tomcat/conf/server.xml,開啟修改如下:
1.埠:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> 
修改如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> 
注意埠按照你的實際情況修改。
2.查詢原有connector註釋項,去掉註釋:
<span style="white-space:pre">			</span><Connector port="443" 
				protocol="HTTP/1.1" 
				SSLEnabled="true" 
				maxThreads="150" 
				scheme="https" 
				secure="true"  
				clientAuth="false" 
				sslProtocol="TLS" 
				ciphers="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
					TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
					TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
					TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
					TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
					TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
					TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
					TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
					TLS_ECDHE_RSA_WITH_RC4_128_SHA,
					TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
					TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
					TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
					TLS_RSA_WITH_AES_128_GCM_SHA256,
					TLS_RSA_WITH_AES_128_CBC_SHA,
					TLS_RSA_WITH_AES_256_CBC_SHA,
					TLS_RSA_WITH_3DES_EDE_CBC_SHA,
					TLS_RSA_WITH_RC4_128_SHA,
					TLS_RSA_WITH_RC4_128_MD5"
				keystoreFile="/etc/tomcat.keystore" 
				keystorePass="www.gbcom.com.cn"/> 

keystoreFile是你的證書檔案地址
keystorePass是你生成證書時設定的密碼


這裡看一下,java1.6和之前的版本只支援TLSv1,所以就不要配置什麼sslEnabledProtocols=“...”了,配了只會出錯。
java1.7開始支援TLS1.2了但是需要修改配置,你才能正常開啟TLS1.2,這裡tomcat好像必須是tomcat7了,具體我沒有測試
如下:
第一步:

<span style="white-space:pre">			</span><Connector port="443" 
				protocol="org.apache.coyote.http11.Http11Protocol"
				maxThreads="150" 
				SSLEnabled="true" 
				scheme="https" 
				secure="true"
				keystoreFile="ssl/.keystore" 
				keystorePass="changeit"
				clientAuth="false" 
				sslProtocol="SSL" 
				ciphers="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
					TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
					TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
					TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
					TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
					TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
					TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
					TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
					TLS_ECDHE_RSA_WITH_RC4_128_SHA,
					TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
					TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
					TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
					TLS_RSA_WITH_AES_128_GCM_SHA256,
					TLS_RSA_WITH_AES_128_CBC_SHA,
					TLS_RSA_WITH_AES_256_CBC_SHA,
					TLS_RSA_WITH_3DES_EDE_CBC_SHA,
					TLS_RSA_WITH_RC4_128_SHA,
					TLS_RSA_WITH_RC4_128_MD5"
				sslEnabledProtocols="TLSv1.2" />
 
第二步:
修改tomcat/bin下的classpath.bat新增:
<span style="white-space:pre">			</span>set JAVA_HOME=C:\Java64\jdk1.8.0_60
			set PATH=%PATH%;C:\Java64\jdk1.8.0_60\bin
			set CATALINA_HOME=C:\apache-tomcat-7.0.64-64bit
			set JAVA_OPTS=-Djdk.tls.client.protocols="TLSv1.2" -Dsun.security.ssl.allowUnsafeRenegotiation=false -Dhttps.protocols="TLSv1.2"

主要是最後一句要加。
3.修改APR:
找到對應的註釋,去掉註釋,修改為:
<span style="white-space:pre">	</span><Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="443" /> 

5.最後一步,強制訪問為https。
修改你的專案下的web.xml
新增:
	<web-app>
	<span style="white-space:pre">	</span>......
		<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>
	</web-app>



6.為客戶端生成證書
下一步是為瀏覽器生成證書,以便讓伺服器來驗證它。為了能將證書順利匯入至IE和Firefox,證書格式應該是PKCS12,因此,使用如下命令生成:
keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore c:\my.p12
對應的證書庫存放在“C:\my.p12”,客戶端的CN可以是任意值。稍候,我們將把這個“my.p12”證書庫匯入到IE和Firefox中。

讓伺服器信任客戶端證書
由於是雙向SSL認證,伺服器必須要信任客戶端證書,因此,必須把客戶端證書新增為伺服器的信任認證。由於不能直接將PKCS12格式的證書庫匯入,我們必須先把客戶端證書匯出為一個單獨的CER檔案,使用如下命令:
keytool -export -alias mykey -keystore my.p12 -store PKCS12 -storepass password -rfc -file c:\my.cer
通過以上命令,客戶端證書就被我們匯出到“C:\my.cer”檔案了。下一步,是將該檔案匯入到伺服器的證書庫,新增為一個信任證書:


keytool -import -v -file my.cer -keystore tomcat.keystore


通過list命令檢視伺服器的證書庫,我們可以看到兩個輸入,一個是伺服器證書,一個是受信任的客戶端證書:


keytool -list -keystore tomcat.keystore
配置Tomcat伺服器
開啟Tomcat根目錄下的/conf/server.xml,找到如下配置段,修改如下:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="C:/tomcat.keystore" keystorePass="password"
truststoreFile="C:/tomcat.keystore" truststorePass="password"
/>
匯入客戶端證書
如果設定了clientAuth="true",則需要強制驗證客戶端證書。雙擊“C:\my.p12”即可將證書匯入至IE:

p12 證書直接雙擊然後按提示下一步就可匯入。

除錯階段問題彙總:

1.tomcat配置ssl後啟動成功點選tomcat下logs資料夾中的catalina.yyyy-MM-dd.log檔案提示如下錯誤
java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR
Tomcat提供了兩個SSL實現,一個是JSSE實現,另一個是APR實現。Tomcat將自動選擇使用哪個實現,即如果安裝了APR則自動選擇APR,否則選擇JSSE。如果不希望讓Tomcat自動選擇,而是我們自己指定一個實現則可通過protocol定義
1.檢視bin資料夾下是否從在tcnative-1.dll,如果沒有則只支援JSSE實現,
2.如果報錯可以修改server.xml
<       
Connector port="8443" 
protocol="org.apache.coyote.http11.Http11Protocol" 
SSLEnabled="true" 
maxThreads="150" 
scheme="https" 
secure="true"  
clientAuth="false" 
sslProtocol="TLS" 
keystoreFile="${user.home}/.keystore"    
keystorePass="pass"
/>

2.對稱與非對稱加密;SSL;HTTPS;AJP
1.對稱加密就是加密與解密的時候都是用一個密碼


2.非對稱加密,有一對密碼A,B;用A加密就得用B解密,相對的用B加密就得用A解密


3.公鑰與私鑰,這一對密碼,隨便拿一個公佈出去,那個就是公鑰,剩下一個是私鑰。


4.應用1:我想給一個人發信息,我就去拿他公佈出來的公鑰加密,加密後就只能用私鑰來解密,由於私鑰在他手中,就能很好在傳輸中保密。


5.應用2:我收到一個資訊,說是銀行發來的賬單,銀行為了不被別人冒牌貨發假資訊給客戶,事先給客戶說好,我給你發信息是我的私鑰加密了的,所以客戶到了資訊就要去拿公鑰來解密,如果能解開說明的確是銀行發的。


6.非對稱加密最常用的演算法是RSA演算法,基本理論是兩個大素數相乘容易,再要想把乘積分解開就很難。


7.SSL協議利用了公鑰和私鑰的原理,位於TCP/IP協議與各種應用層協議之間,有一些安全握手的過程,為資料通訊提供安全支援。


8.HTTPS就應用了SSL層,http層,tcp/ip層之間又加入了ssl層。預設埠是443


9.今天在配置tomcat的server.xml的時候看見了8009這個connector的配置,用的AJP協議。查了一些,大致是用來和其他http伺服器聯合使用的一個入口。有的伺服器靜態資源的響應要比tomcat效率好,比如apache。就可以訪問靜態資源的走apache。但他不支援j2ee,沒有jsp。如果使用者像apache發起一個jsp請求,就可以用tomcat提供的一個工具做一個關聯對映,由apache再向tomcat發請求來訪問jsp。走的就是8009這個埠。AJP用的長連線,使效能更高。

3.<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
tomcat下server.xml列印引用和OS資訊

4.java1.6只支援TLSv1,所以,你的設定為SSLProtocol=“TLS”就好了,從1.7開始可以實用sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" 所以你在配置tomcat/conf/server.xml可以配置這一項。

相關推薦

配置tomcat支援ssl

windows下:1.獲取證書和配置tomcat java-jdk提供一個簡單的製作證書的工具,你可以用它來產生一個證書做測試用: 1.先來到你的jdk/bin下 2.執行 keytool -genkey -alias tomcat -keyalg RSA -keystor

配置Tomcat支援https協議

1.通過JDK自帶的keytool生成證書 keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:/tomcat.keystore -val

如何配置Tomcat支援HTTP Delete和Put 方法

在tomcat web.xml檔案中配置org.apache.catalina.servlets.DefaultServlet的 <init-param> <param-name>readonly</param-name> &l

Nginx之websocket配置支援ssl

經過一天的查資料嘗試,終於讓騰訊雲中的websocket伺服器支援ssl了。是基於springboot和Nginx來做的。 #所有行的開頭要麼是頂頭輸入,要麼需要tab鍵, #否則會無法識別該行的第一個字母 upstream urladd{ #如果伺服器在本機就用1

配置Tomcat使用https協議(配置SSL協議)

操作 method enable 安裝 文件的 chan 根據 域名 add 轉載地址:http://ln-ydc.iteye.com/blog/1330674 內容概覽: 如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 協議 1.生成安全證書

keytool生成證書與tomcatSSL配置使用

存取 eal win sport 設置 在那 port adt hang 一、Keytool介紹 Keytool是一個Java數據證書的管理工具。Keytool將密鑰(key)和證書(certificates)存在一個稱為keystore的文件中在keystore裏,包含兩

Nginx + Tomcat + HTTPS SSL 支援(阿里雲http升級https)

一、安全證書下載 1.登入阿里雲選擇控制檯 2.進入控制檯後選擇產品與服務,選擇安全(雲盾)中的SSL證書(應用安全) 3.進入頁面後,點選購買證書 4.根據您的需要進行證書的購買,這裡我使用的是免費版的 5.購買證書成功後可以在管理控制檯我的訂單中

已安裝nginx支援https配置 the "ssl" parameter requires ngx_http_ssl_module

原文連結:https://blog.seosiwei.com/detail/28   nginx已安裝,ssl模組未安裝的解決方法: 如果需要在linux中編譯自己的nginx伺服器,請參照:https://www.cnblogs.com/zkfopen/p/10118627.html 一:

1個 Tomcat 配置 多個 SSL 證書域名 共有80埠

單個Tomcat配置多個域並配置多個證書 http://blog.csdn.net/baidu_18607183/article/details/51983439 Tomcat 9 配置多個虛擬主機與HTTPS證書 多個虛擬主機 公用1個埠 http://

LINUX nginx使用ssl模組配置HTTPS支援

預設情況下ssl模組並未被安裝,如果要使用該模組則需要在編譯時指定–with-http_ssl_module引數,安裝模組依賴於OpenSSL庫和一些引用檔案,通常這些檔案並不在同一個軟體包中。通常這個檔名類似libssl-dev。 生成證書 可以通過以下步驟生成一個

nginx配置將http請求轉發支援ssl雙向認證https請求的正向代理

一、引言 nginx 是否支援將http請求轉發為https支援ssl雙向認證,網上沒什麼用例可以參考,查詢各大開發運維社群了下有幾種說法 支援: 不支援: 不清楚家祭不忘告乃翁:

tomcat新增ssl證書對https的支援

下午技術總監告訴我:喂,我幫你把cas伺服器添加了個ssl證書,現在登入不了了,你看看什麼問題。 既然有了需求,那我們只能賣力的看問題了。 ps:可能是昨天加班太晚,今天整個人都是懵逼的 1.新增tomcat對https的支援 修改conf/server.xml

阿里雲申請SSL證書以及配置Tomcat為Https請求

1、首先進入阿里雲官網(https://www.aliyun.com)找到安全→CA證書服務進行免費申請。 2、證書型別選擇“免費型DV SSL”,然後立即購買,等十分鐘左右就會通過稽核下發證書。 3

配置Tomcat使用https協議(SpringMVC配置SSL協議)

一、生成安全證書 二、配置tomcat 伺服器 1、個人環境: jdk 1.8  tomcat 7 2、生成安全證書:在jdk的安裝目錄下的 D:\Program Files (x86)\Java\jdk1.8.0_131\bin 目錄下有keytool.exe

Tomcat 配置阿里的ssl安全證書,實現https訪問

        要做微信小程式,必須要能https訪問,做下安全協議。好吧,只能實現了。最初始我用的是apache配置的,但是,按照他那個步驟,不行。也沒找到問題出現在哪。好吧,實在是沒有辦法了。只能用了tomcat。感覺很坑。 配置的話,總得需要知道屬性代表的意思。不然,

從零開始構建支援TLS1.2的Web伺服器Linux版(二) 配置Tomcat環境

博文目錄 下載Tomcat安裝包 在下載安裝Tomcat前,請確保已經按 (一) 配置JAVA環境 正確安裝配置好Java環境。 根據自己的需要選擇合適的安裝包,官方下載

Nginx使用ssl模組配置HTTPS支援

預設情況下ssl模組並未被安裝,如果要使用該模組則需要在編譯時指定–with-http_ssl_module引數。 1.安裝基礎支援包 yum -y install openssl openssl-devel 2.備份原nginx.conf檔案為nginx.conf.bak

配置Tomcat/Resin 支援TLS 1.2

1.配置Tomcat on Windows: 開啟D:\apache-tomcat-7.0.75\bin\catalina.bat 在不影響其他程式碼的地方加入: set JAVA_OPTS="-Dhttps.protocols=TLSv1.2" 例如:在if not "%

nginx下配置SSL,tomcat no SSL,專案使用https協議

https://feitianbenyue.iteye.com/blog/2056357   配置 Nginx 的轉

配置tomcat

linux tomcat curl wget配置tomcat一、tomcat介紹Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其他一些公司及個人共同開發而成。因為Tomcat技術先進、性能穩