tomcat端口介绍以及配置启用https
一、tomcat 默认端口
- <Server port="8005" shutdown="SHUTDOWN"> 远程停服务端口
- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> 其中8080为HTTP端口,8443为默认HTTPS端口
- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 8009为AJP端口,服务器之间的通信使用该端口
二、tomcat配置文件介绍
<Server port="8005" shutdown="SHUTDOWN">
<!--
属性说明port:指定一个端口,这个端口负责监听关闭Tomcat的请求shutdown:向以上端口发送的关闭服务器的命令字符串
--><Listener className="org.apache.catalina.core.AprLifecycleListener" /><Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/><GlobalNamingResources><Environment name="simpleValue" type="java.lang.Integer" value="30"/><Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /></GlobalNamingResources>
<!--每个Service元素只能有一个Engine元素.元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求--><!--
属性说明name:Service的名称
-->
<Service name="Catalina"><!--Connector元素:由Connector接口定义.<Connector>元素代表与客户程序实际交互的组件,它负责接收客户请求,以及向客户返回响应结果--><Connector port="80" maxHttpHeaderSize="8192"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true" /><!-- 属性说明port:服务器连接器的端口号,该连接器将在指定端口侦听来自客户端的请求。enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名若为false则不进行DNS查询,而是返回其ip地址。redirectPort:服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号。acceptCount:当所有可以使用的处理请求的线程都被用光时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,而返回Connection refused错误。connectionTimeout:等待超时的时间数(以毫秒为单位)。maxThreads:设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为200。protocol:必须设定为AJP/1.3协议。address:如果服务器有两个以上IP地址,该属性可以设定端口监听的IP地址,默认情况下,端口会监听服务器上所有IP地址。minProcessors:服务器启动时创建的处理请求的线程数,每个请求由一个线程负责。maxProcessors:最多可以创建的处理请求的线程数。minSpareThreads:最小备用线程 。maxSpareThreads:最大备用线程。debug:日志等级。disableUploadTimeout:禁用上传超时,主要用于大数据上传时。--><Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /><!-- 负责和其他HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时就需要用到这个连接器。 --><Engine name="Catalina" defaultHost="localhost"><!-- 属性说明name:对应$CATALINA_HOME/config/Catalina中的Catalina defaultHost:对应Host元素中的name属性,也就是和$CATALINA_HOME/config/Catalina/localhost中的localhost 缺省的处理请求的虚拟主机名,它至少与其中的一个Host元素的name属性值是一样的debug:日志等级--><Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/><!-- 由Host接口定义.一个Engine元素可以包含多个<Host>元素。每个<Host>的元素定义了一个虚拟主机.它包含了一个或多个Web应用。--><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><!-- 属性说明name:在此例中一直被强调为$CATALINA_HOME/config/Catalina/localhost中的localhost虚拟主机名debug:是日志的调试等级 appBase:默认的应用路径,也就是把应用放在一个目录下,并在autoDeploy为true的情况下,可自动部署应用此路径相对于$CATALINA_HOME/ (web applications的基本目录)unpackWARs:设置为true,在Web应用为*.war是,解压此WAR文件. 如果为true,则tomcat会自动将WAR文件解压;否则不解压,直接从WAR文件中运行应用程序.autoDeploy:默认为true,表示如果有新的WEB应用放入appBase 并且Tomcat在运行的情况下,自动载入应用 --><Context path="/demm" docBase="E:\\projects\\demm\\WebRoot" debug="0" reloadable="true" > </Context><!-- 属性说明path:访问的URI,如:http://localhost/是我的应用的根目录,访问此应用将用:http://localhost/demm进行操作,此元素必须,表示此web application的URL的前缀,用来匹配一个Context。请求的URL形式为http://localhost:8080/path/*docBase:WEB应用的目录,此目录必须符合Java WEB应用的规范,web application的文件存放路径或者是WAR文件存放路径。debug:日志等级 reloadable:是否在程序有改动时重新载入,设置成true会影响性能,但可自动载入修改后的文件,如果为true,则Tomcat将支持热部署,会自动检测web application的/WEB-INF/lib和/WEB-INF/classes目录的变化,自动装载新的JSP和Servlet,我们可以在不重起Tomcat的情况下改变web application--></Host></Engine></Service>
</Server>
三、创建tomcat证书
https协议需要证书,为了开发去CA买证书是浪费,使用jdk自带的keytool工具做一个开发测试用足够。详细可参考 jdk8的keytool的官方文档:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html#CHDBGFHE。
HTTP重定向至HTTPS也就是将80端口重定向至443端口
3.1利用JDK自带的keytool工具来生成证书:
3.1.1. 在jdk的安装目录\bin\keytool.exe下打开命令行提示符
2. 在命令行中输入生成keystore的命令,新生成一个密钥库:
keytool -genkeypair -alias oycsso -keyalg RSA -validity 36500 -storepass 123456 -keystore E:/oycsso .keystore -v
- -alias "oycsso":证书项的名字,必填项
- -keyalg RSA:证书签名算法,tomcat建议RSA
- -validity 36500:证书有效期,36500天,即100年
- -storepass 123456:密钥库密码,也就是等下要生成的oycsso.keystore的访问密码,妥善保管
- -keystore "E:\oycsso.keystore":要生成的文件的位置,存储在E盘根目录
- -v:该选项会显示比较详细的信息
以上命令将生产一对非对称密钥和自我签名的证书E:\oycsso.keystore
注意:“名字与姓氏”应该是域名,输成了姓名,和真正运行的时候域名不符,会出问题
3.2配置tomcat服务器
定位到tomcat服务器的安装目录, 找到conf下的server.xml文件
6、修改tomcat配置文件
<!--老版本tomcat的配置,在tomcat8下测试成功-->
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443"/>
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS" keystoreFile="/conf/oycsso.keystore"keystorePass="123456"/>
注意:以上配置是老版本tomcat的配置,从tomcat8.5开始tomcat更改了配置形式,如上配置估计在tomcat10的时候会完全废弃,在tomcat9.0下测试成功的配置如下:
<!--新版本tomcat的配置,在tomcat9下测试成功-->
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443" />
<Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true"><SSLHostConfig><Certificate certificateKeystoreFile="conf/oycsso.keystore" certificateKeystorePassword="123456" /></SSLHostConfig>
</Connector>
要修改的配置文件是tomcat的server.xml文件。仔细看上面的配置,第一个Connector是默认就有的,这里只是把8080端口改成了公认的80端口,把8443端口改成了公认的443端口。第二个Connector默认是注释掉的,搜索8443就能找到,直接把上述第二个Connector粘贴到server.xml中第一个Connector的下面,方便管理。keystoreFile=”/conf/oycsso.keystore”就是刚才copy的文件的位置,可以自己改到其他位置。keystorePass=”123456”就是刚才创建密钥库时使用的口令。
3.3 测试
四、chrome提示ERR_SSL_VERSION_OR_CIPHER_MISMATCH
今天配完tomcat ssl后,发现页面无法访问。chrome提示以下:
解决方案,在ssl的那个connector配置指定加密协议集:
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"
具体connector配置如下:
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true" URIEncoding="UTF-8" keystoreFile="conf/chinanetcenter.tomcat" keystorePass="2013111"clientAuth="false" sslProtocol="TLS" keystoreType="PKCS12" ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"compression="on" compressionMinSize="50" noCompressionUserAgents="gozilla, traviata"compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"/>
配置完后,就可以访问页面了。
五、导出数字证书
有了数字证书(尽管没有被CA认证,但是可以先用着),我们就需要将数字证书导出,格式为*.cer,命令参数如下:
根据刚才生成的keystore证书,我们导出cer证书,实现如下:
keytool -exportcert -alias oycsso -keystore E:/oycsso.keystore -file E:/oycsso.cer -rfc
在这里我们可以使用 -storepass参数指定证书所使用的密码
keytool -exportcert -alias oycsso -keystore d:/oycsso.keystore -file d:/oycsso.cer -rfc -storepass 123456
生成了数字证书,我们可以使用-printcert命令打印出证书的相关信息:
到此为止,我们使用keytool生成了两个数字证书,一个是keystore格式的,一个cer格式的,他们都没有经过CA机构认证,没有任何的法律效力,但是可以正常使用的,比如,把keystore格式的证书导入Tomcat中,cer格式的证书导入浏览器中,或是使用cer证书构建Java Https请求,这都是Https单项认证。
六、构建CA签发证书
如果哪一天,我们需要一个CA机构认证过的数字证书(产品上线的话就会了,总不能让客户手动往浏览器添加cer证书吧),我们就需要生成CA数字证书签发申请(CSR),该证书格式为*.csr
有关生成证书请求的命令参数如下:
在这里我们依旧依靠keystore证书来生乘csr
keytool -certreq -alias oycsso -keystore E:/oycsso.keystore -file E:/oycsso.csr -v
还是比较人性化的,还有提示。
七、导入证书信任库
获得CA签发的数字证书后,我们需要将其导入到信任库,使用的命令为-importcert,参数如下:
具体实现如下:
keytool -importcert -trustcacerts -alias oycsso -file E:/oycsso.cer -keystore E:/oycsso.keystore
查看证书命令
keytool -list -alias oycsso -keystore E:/oycsso.keystore
tomcat端口介绍以及配置启用https相关推荐
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器启用https服务申请免费证书...
背景分析 目前想在 web 上使用 HTTPS 的话, 你需要获得一个证书文件, 该证书由一个受浏览器信任的公司所签署. 一旦你获得了它, 你就在你的 web 服务器上指定其所在的位置, 以及与你关联 ...
- Tomcat启用HTTPS协议配置过程
Article1较为简洁,Article2较为详细,测试可行. Article1 概念简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问 ...
- 在 Apache Tomcat 服务器上启用 HTTPS 或 SSL 正确方式的分步指南 – 端口 8443
我开始使用Apache Tomcat已经快 12 年了.我相信当我做我的一年级项目时,它是在 Tomcat 版本上1.x.现在它已经在 version 上8.0.在我的日常工作生活中,我大部分时间都在 ...
- Tomcat介绍和安装,以及tomcat的虚拟主机配置
为什么Tomcat火了 Tomcat介绍 Tomcat核心组件 简述Tomcat处理请求过程 Tomcat目录机构 Tomcat安装 虚拟主机配置 Tomcat介绍 ●自从JSP发布之后,推出了各式各 ...
- 端口安全原理介绍及配置命令
[欢迎关注微信公众号:厦门微思网络] 微思网络(官网):https://www.xmws.cn/ 流控与交流机访问控制 可在端口上配置端口安全技术,使该端口只允许特定的设备访问. 端口安全技术通过MA ...
- apache配置证书后 tomcat无法访问_给你的项目配置个https吧
1.申请证书 这里我选择的是阿里云的个人免费的证书 因为使用的是内置的Tomcat,所以下载Tomcat类型的 2.配置项目 将证书XXXX.pfx文件放到项目的resources目录,接着修改app ...
- JSP→JavaWeb简介、Tomcat服务器安装启动测试目录、Tomcat手动创建项目、开发工具MyEclipse与Eclipse配置环境、MyEclipse创建Web程序目录、修改Tomcat端口
动态网页的动态指的是能与用户进行交互 Tomcat官网http://tomcat.apache.org/ Tomcat服务器安装启动测试目录 Tomcat手动创建项目 修改服务器配置生效需要重启!重启 ...
- Tengine(Nginx)配置SSL(https),应用服务器(Tomcat)无需配置
2019独角兽企业重金招聘Python工程师标准>>> 要点:如果系统是内部用,可以通过openssl生成证书,只是访问的时候,浏览器会提示不信任, 1.生成证书,创建存放证书的目录 ...
- Tomcat介绍及配置
web服务器的作用: 当接收的请求是动态请求,则会将请求给web容器拼凑生成代码,返回web服务器. 一般在平时说的"买服务器"是指一台专门用于安装Web服务器的计算机,web服务 ...
最新文章
- 赠书 | Python 预测股票价格,竟然这么简单
- SQL语句中between and 范围
- SQL Server 2005无法输入中文的解决方案
- SQL注入(SQL Injection)
- 这样学习JAVA 基础才能又快又稳!
- 给大家推荐几位顶级Go语言专家写的公众号
- python 系统编程
- Java 密码扩展无限制权限策略文件[转]
- 进程同步与互斥:POSIX有名信号量
- 十年肺腑之言:说说技术总监的“三板斧”
- 通过JS改变框架的src
- RV1109人脸识别门禁闸机主板方案
- http://www.jobui.com/mianshiti/it/java/6782/
- 植物大战僵尸存档关卡和金币修改
- 【WIN32之旅】WINDOWS错误处理与参考(四)
- 学习大数据需要什么语言基础
- (附源码)springboot万花筒 毕业设计 345600
- 项目开发技术点、困难点总结——2020-2021年
- SICK LMS 111激光雷达数据读取与分析
- 智汀智能家居普及篇——智能家居必备的功能控制系统
热门文章
- Arcgis Engine 报错:异常来自HRESULT:0x80040228
- AtCoder Regular Contest 107----B - Quadruple(数学分析)
- win7文件夹没有共享服务器,win7系统文件夹选项中没有共享选项页怎么办
- EN 622-1 纤维板规范第一部分:一般要求
- 《一些关于做人、做生意的道理》
- 升级IE6提示“以前的安装有尚未完成的操作,需重新启动”
- Android 热更新框架
- Hermite 曲线
- python词云展示库——Wordcloud的安装
- IOS下的屏幕相关和AppIcon尺寸以及LaunchImage 简单介绍