引言
tomcat核心功能还是作为java的容器来运行java后端代码,虽然内置了对http请求的支持,但并不是最优选择,通常部署时,会在tomcat前面加一个专用的http服务器,例如nginx或apache
一、关键目录信息
1.logs目录
(1)catalina.out
tomcat运行过程中的终端输出,可以看到错误信息从而定位问题
当tomcat启动之后占用了后台进程,其过程中遇到的报错或请求信息输出都会在本文件中存储
我们可以使用 tail -f catalina.out
进行实时查看文件信息变更
(2)localhost_access_log.2024-01-20.txt
该文件是tomcat中的访问日志存储文件,其中存储的全都是外部访问的信息。在linux上 tomcat 8.0 默认是打开的,可以手工关闭,但不建议关闭,可用于取证溯源
其中内容大致如图所示,记录了来访客户端的ip地址,以及该客户端都访问了那些内容
我们可以使用 tail -f localhost_access_log.2024-01-20.txt
来实时观测文件信息变更
(3)/opt/apache-tomcat-8.0.53/conf/server.xml
该文件属于tomcat的核心配置文件,其中当然也包含了日志配置信息
按下shift+g即可到达文本最后
<valve classname="org.apache.catalina.valves.accesslogvalve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
2./opt/apache-tomcat-8.0.53/conf/server.xml
这是tomcat的核心配置文件
<connector port="8080" protocol="http/1.1" connectiontimeout="20000" redirectport="8443" />
这是http服务开启的端口配置,8080是http的默认端口,8443是https的默认端口
<!-- <connector port="8443" protocol="org.apache.coyote.http11.http11nioprotocol" maxthreads="150" sslenabled="true" scheme="https" secure="true" clientauth="false" sslprotocol="tls" /> -->
配置 https 的基本信息,在互联网上,http必须是80,https必须是443,这样才不需要再url地址中加端口号,其他的都需要明确指定
<!-- define an ajp 1.3 connector on port 8009 --> <connector port="8009" protocol="ajp/1.3" redirectport="8443" />
这是当在tomcat前另加一个处理http请求的apache服务器时所用的配置
其中ajp表示用于将http的请求需要tomcat容器(java)处理的部分,交给java来处理
二、tomcat配置https
1.基础
- http协议是全程明文,所以非常不安全
- http(应用层)+ tcp(传输层) 之间加了一层 ssl(tls),将http协议进行加密再传输
- https的公网上传输:公钥+私钥进行加密,客户端或浏览器可信证书(ca机构颁发)
- 安全和性能不可得兼
- 局域网内部配置:(无法取得公网浏览器的信任,现实情况不可用)
(1)http协议明文传输
全过程都是明文,没有一点秘密可言
(2)https对称加密传输
一般情况下https协议使用的是对称密钥加密传输,当然,这个对称也不是言语上的对称
事实上,客户端会生成一个随机秘钥,然后利用该随机秘钥对所要传输的数据进行加密,然后客户端利用自己的公钥对随机秘钥进行加密,然后client将加密后的随机秘钥和数据一起发送给服务器,服务器利用client的证书可以解开随机秘钥,然后再利用随机秘钥解开数据信息
(3)https非对称加密传输
在这里我们将程度比作client,上海比作服务器,传输数据比作发快递
客户端对要发送的数据进行加密,发送给服务器。此时服务器无法解密,于是服务器自己也加密一次又发送给客户端。此时客户端对自己的加密解开然后再发送给服务器,此时数据上就只剩下上海自己的加密了
这只是大致的意思,具体信息还没学到…
2.配置
- 进入jdk执行目录,如果应将jdk环境变量添加好了就可以不需用这一步
cd /usr/java/jdk/bin
- 输入指令:
keytool -genkeypair -alias "tomcat" -keyalg "rsa" -keystore "/opt/tomcat.keystore"
执行之后会出现以下信息,跟着问题做就行了
输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么? [unknown]: ymq 您的组织单位名称是什么? [unknown]: youdian 您的组织名称是什么? [unknown]: youdian 您所在的城市或区域名称是什么? [unknown]: xian 您所在的省/市/自治区名称是什么? [unknown]: shanxi 该单位的双字母国家/地区代码是什么? [unknown]: cn cn=ymq, ou=youdian, o=youdian, l=xian, st=shanxi, c=cn是否正确? [否]: y 输入 <tomcat> 的密钥口令 (如果和密钥库口令相同, 按回车): 再次输入新口令: warning: jks 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore /opt/tomcat.keystore -destkeystore /opt/tomcat.keystore -deststoretype pkcs12" 迁移到行业标准格式 pkcs12。
此时我们就可以看到该目录下多了一个证书文件
但是上述信息给出了warning,我们看看,他说要我们使用这条命令来迁移什么什么,ok
也就是再执行一次,然后备份了一下证书文件
- 进入 /opt/apache-tomcat-8.0.53/conf/server.xml
取消https配置的注释,并且在下面添上两个配置 keystorefile="/opt/tomcat.keystore" keystorepass="p-0p-0p-0"
使得完整信息如下
<connector port="8443" protocol="org.apache.coyote.http11.http11nioprotocol" maxthreads="150" sslenabled="true" scheme="https" secure="true" clientauth="false" sslprotocol="tls" keystorefile="/opt/tomcat.keystore" keystorepass="p-0p-0p-0" />
由
变为
- 重启tomcat
/opt/apache-tomcat-8.0.53/bin/shutdown.sh
/opt/apache-tomcat-8.0.53/bin/startup.sh
现在我们去尝试使用https访问woniusales
好家伙还是访问不了,想想问题,防火墙开没开,端口访问改没改
firewall-cmd --add-port=8443/tcp --permanent firewall-cmd --add-service=https --permanent systemctl restart firewalld
虽然我们电脑上还是访问不了(大概率是因为现在浏览器都比较高级,非权威机构发行的证书是不被浏览器允许的),但是tomcat上配置https基本流程就是这样
三、公网
1.公网需要一个固定的ip地址:购买一台云服务器,即可获得一个固定ip
2.建议最好注册一个域名,然后去通管局备案(否则不允许用域名访问)
3.将该域名解析到ip地址,即可实现域名访问,否则只能使用ip访问
以上就是tomcat下配置https的图文教程的详细内容,更多关于tomcat配置https的资料请关注代码网其它相关文章!
发表评论