日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

全面讲解Tomcat下SSL证书的配置(五)

發(fā)布時(shí)間:2024/1/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全面讲解Tomcat下SSL证书的配置(五) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Tomcat下具體的配置

Tomcat下關(guān)于使用SSL證書(shū)的配置可以分為三部分
1.啟用SSL,使用Tomcat Java平臺(tái)自身的SSL功能;
2.啟用SSL,通過(guò)apr協(xié)議調(diào)用openssl的SSL功能;
3.啟用SSL之后的安全配置。
Tomcat本身體型不大,它主要的底層工作都是由Java平臺(tái)的虛擬機(jī)來(lái)完成的,比如說(shuō)內(nèi)存的調(diào)度使用、SSL的通信等。它作為常用的中間件容器具有較好的擴(kuò)展性,允許用戶(hù)使用Java平臺(tái)本身的SSL通信功能(默認(rèn)),同時(shí)又向用戶(hù)提供了一種使用專(zhuān)業(yè)縱深性較好的openssl的SSL功能。
由于Java平臺(tái)本身在逐漸淘汰安全系數(shù)低的SSL2.0、SSL3.0協(xié)議,默認(rèn)客戶(hù)端必須使用TLS1.0及以上的協(xié)議與之通信,這對(duì)很多客戶(hù)端還停留在xp系統(tǒng)IE6瀏覽器的環(huán)境的項(xiàng)目來(lái)說(shuō),增加了不少的推廣阻力和維護(hù)工作量。對(duì)于上述情況,openssl可以很好的解決這個(gè)問(wèn)題,它仍支持使用SSL2.0及以上通信的客戶(hù)端進(jìn)行訪(fǎng)問(wèn)。并且使用openssl可以為SSL配置指定 證書(shū)、私鑰、證書(shū)鏈,分而治之可以很好的處理當(dāng)證書(shū)鏈發(fā)生變化時(shí)引起的證書(shū)整體更換。也為向筆者之前那樣,因?yàn)椴皇煜eytool、openssl工具的使用,導(dǎo)致的證書(shū)鏈問(wèn)題的技術(shù)人員提供了解決方法。總之,使用擴(kuò)展調(diào)用openssl將會(huì)給用戶(hù)更多的選擇。
當(dāng)Tomcat啟用了SSL功能之后,為了更好地保證該功能的使用,需要對(duì)它做一些安全性配置,以保證用戶(hù)的訪(fǎng)問(wèn)都是通過(guò)https的,在用戶(hù)試圖通過(guò)http進(jìn)行訪(fǎng)問(wèn)時(shí),tomcat應(yīng)可以直接跳轉(zhuǎn)至https協(xié)議通信。

下面將講述具體的配置步驟

1.啟用SSL,使用Tomcat Java平臺(tái)自身的SSL功能;

Java平臺(tái)使用SSL支持兩種協(xié)議
在tomcat/confg/server.xml對(duì)應(yīng)的connector中配置其中之一即可
這是Tomcat官方文檔中給的示例:

<!-- Define a HTTP/1.1 Connector on port 8443, JSSE NIO implementation --> <Connector protocol="org.apache.coyote.http11.Http11NioProtocol"port="8443" .../><!-- Define a HTTP/1.1 Connector on port 8443, JSSE BIO implementation --> <Connector protocol="org.apache.coyote.http11.Http11Protocol"port="8443" .../> <!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --> <Connector protocol="org.apache.coyote.http11.Http11NioProtocol"port="8443" maxThreads="200"scheme="https" secure="true" SSLEnabled="true"keystoreFile="${user.home}/.keystore" keystorePass="changeit"clientAuth="false" sslProtocol="TLS"/>

Tomcat默認(rèn)的http對(duì)應(yīng)端口為8080,https對(duì)應(yīng)端口為8443,實(shí)際上并不方便用戶(hù)直接訪(fǎng)問(wèn),這里我們可以改為80和443
下面是本實(shí)驗(yàn)環(huán)境中的配置:

<Connector port="80" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="443" /> <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true" scheme="https" secure="true"clientAuth="false"sslEnabledProtocols="SSLv2,SSLv3,TLSv1,TLSv1.1,TLSv1.2,SSLv2Hello"keystoreFile="/home/oa/tomcat7/conf/www.yuanlangchao.jks" keystorePass="yuanlangchao" />

我們此處使用sslEnabledProtocols增強(qiáng)型的ssl協(xié)議主要是為了使用SSLv2Hello,相對(duì)于 sslProtocols=”SSL+SSLv2+SSLv3+TLS+TLSv1+TLSv1.1+TLSv1.2” ,前者會(huì)讓客戶(hù)端有更多選擇;只要客戶(hù)端勾了TLS版本中的任意一個(gè)即可以與服務(wù)器建立通信,而后者做不到。就是說(shuō)使用sslEnabledProtocols會(huì)有更好地兼容性。
很多情況下從安全性的腳本我們可能會(huì)指定 具體的協(xié)議算法規(guī)則如ciphers=”TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA”

最終效果如下圖

2.啟用SSL,通過(guò)apr協(xié)議調(diào)用openssl的SSL功能;

通過(guò)apr調(diào)用openssl在tomcat/conf/server.xml中的配置
官方文檔的說(shuō)明:

<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --> <Connector protocol="org.apache.coyote.http11.Http11AprProtocol"port="8443" maxThreads="200"scheme="https" secure="true" SSLEnabled="true"SSLCertificateFile="/usr/local/ssl/server.crt"SSLCertificateKeyFile="/usr/local/ssl/server.pem"SSLVerifyClient="optional" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"/> 這里寫(xiě)代碼片

APR是Apache的另一個(gè)項(xiàng)目,需要下載安裝;apr通過(guò)openssl來(lái)進(jìn)行傳輸,需要保證服務(wù)器上已安裝了最新的openssl版本,尤其是注意使用應(yīng)對(duì)openssl心臟出血漏洞修復(fù)之后的版本。此外還需要Tomcat的擴(kuò)展包Tomcat native與APR、Openssl配合使用。請(qǐng)按照下面的先后順序安裝配置:
APR與OPENSSL的安裝如果系統(tǒng)yum為最新可以直接使用命令

yum install apr-devel openssl-devel

APR的下載安裝

//解壓配置編譯安裝 [root@oracle apr-1.5.2]# tar -vxf apr-1.5.2.tar.gz [root@oracle apr-1.5.2]# cd apr-1.5.2 [root@oracle apr-1.5.2]# ./configure [root@oracle apr-1.5.2]# make [root@oracle apr-1.5.2]# make install

openssl版本下載安裝

[root@oracle ~]# tar -vxf openssl-1.0.2d.tar.gz [root@oracle ~]# cd openssl-1.0.2d [root@oracle ~]# ./config [root@oracle ~]# make [root@oracle ~]# make test [root@oracle ~]# make install [root@oracle ~]# /usr/local/ssl/bin/openssl version OpenSSL 1.0.2d 9 Jul 2015

Tomcat native下載安裝

[root@oracle ~]# tar -vxf tomcat-native-1.1.33-src.tar.gz[root@oracle ~]# cd tomcat-native-1.1.33-src/jni/native/[root@oracle native]# ls build build.conf build-outputs.mk configure include libtcnative.dsw NMAKEmakefile os srclib tcnative.pc.in buildconf BUILDING config.layout configure.in libtcnative.dsp Makefile.in NMAKEmakefile.inc src tcnative.dsp tcnative.spec[root@oracle native]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config \ >--with-java-home=/usr/java/jdk8/ > --with-ssl=yes \ > -prefix=/home/oa/tomcat7/[root@oracle native]# make && make install[root@oracle native]# cd /home/oa/tomcat7/lib/[root@oracle lib]# ls annotations-api.jar catalina-tribes.jar jasper.jar libtcnative-1.so servlet-api.jar tomcat-dbcp.jar tomcat-jdbc.jar catalina-ant.jar ecj-4.4.2.jar jsp-api.jar libtcnative-1.so.0 tomcat7-websocket.jar tomcat-i18n-es.jar tomcat-util.jar catalina-ha.jar el-api.jar libtcnative-1.a libtcnative-1.so.0.1.33 tomcat-api.jar tomcat-i18n-fr.jar websocket-api.jar catalina.jar jasper-el.jar libtcnative-1.la pkgconfig tomcat-coyote.jar tomcat-i18n-ja.jar //已經(jīng)包含了native相關(guān)的包,表明安裝成功,需要將它配置到名為 LD_LIBRARY_PATH的環(huán)境變量 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/oa/tomcat7/lib export LD_LIBRARY_PATH[root@oracle ~]# cat .bash_profile # .bash_profile# Get the aliases and functions if [ -f ~/.bashrc ]; then. ~/.bashrc fi# User specific environment and startup programsPATH=$PATH:$HOME/bin JAVA_HOME=/usr/java/jdk8 JRE_HOME=/usr/java/jdk8/jre/ CATALINA_HOME=/home/oa/tomcat7/ export JAVA_HOME export CATALINA_HOME PATH=$JAVA_HOME/bin:$PATH:/usr/local/ssl/bin/ export JRE_HOME export PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/oa/tomcat7/lib export LD_LIBRARY_PAT

上面三步完成后:
需要檢查server.xml中的AprLifecycleListener,默認(rèn)是開(kāi)啟的

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

本演示環(huán)境的配置:

<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"maxThreads="150" SSLEnabled="true" scheme="https" secure="true"clientAuth="false"SSLProtocol="SSLv2+SSLv3+TLSv1+TLSv1.1+TLSv1.2"SSLCertificateFile="/home/oa/tomcat7/conf/www.yuanlangchao.com.pem_nochain.crt"SSLCertificateKeyFile="/home/oa/tomcat7/conf/www.yuanlangchao.com.private.key"SSLCertificateChainFile="/home/oa/tomcat7/conf/yuan_bundle.crt" />

啟動(dòng)tomcat看日志中下面狀態(tài)表示apr啟動(dòng)成功

Sep 23, 2015 6:52:16 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFO: Loaded APR based Apache Tomcat Native library 1.1.33 using APR version 1.5.2. Sep 23, 2015 6:52:16 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. Sep 23, 2015 6:52:16 AM org.apache.catalina.core.AprLifecycleListener initializeSSL

此時(shí)客戶(hù)端通過(guò)單獨(dú)通過(guò)SSL2.0、SSL3.0都可以訪(fǎng)問(wèn)站點(diǎn),當(dāng)然這是不安全的也是Java平臺(tái)將其淘汰的原因,但它可以很好得處理客戶(hù)端兼容性,尤其是低版本的瀏覽器:

3.啟用SSL之后的安全配置。

tomcat啟用SSL之后,一般是需要做到基于安全考慮的強(qiáng)制跳轉(zhuǎn),就是說(shuō)用不知道這是個(gè)安全站點(diǎn)使用http進(jìn)行訪(fǎng)問(wèn)時(shí),系統(tǒng)強(qiáng)制跳轉(zhuǎn)到安全的https端口進(jìn)行訪(fǎng)問(wèn)。Tomcat通過(guò)對(duì)頁(yè)面權(quán)限的訪(fǎng)問(wèn)來(lái)做到:
需要在/conf/web.xml最后添加如下配置

<welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list><!--下面是添加的--> <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>

配置完成后重啟即可生效。

參考文檔
http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html#Edit_the_Tomcat_Configuration_File
http://tomcat.apache.org/tomcat-7.0-doc/config/http.html#NIO_specific_configuration
http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#jssenames

總結(jié)

以上是生活随笔為你收集整理的全面讲解Tomcat下SSL证书的配置(五)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。