Apache 配置 Https 转发 Tomcat,项目中的 Tomcat 也可以使用 https
最编程
2024-04-25 19:52:27
...
1.从Apache服务器和Nginx服务器差不多,都可以做反向代理服务器
2.首先需要拆解下步骤:
2.1 Apache 支持Https;
2.2 Apache 代理转发;
2.3 Apache https 代理转发Tomcat ;
3. 具体的步骤
步骤一:下载SSL证书
-
登录阿里云数字证书管理服务控制台。
-
在左侧导航栏,单击SSL 证书。
-
在SSL 证书页面,定位到目标证书,在操作列,单击下载。
-
在服务器类型为Apache的操作列,单击下载。
5.解压缩已下载的SSL证书压缩包。根据您在提交证书申请时选择的CSR生成方式,解压缩获得的文件不同,具体如下表所示。
步骤二:在Apache服务器安装证书
1. 执行以下命令,在Apache的安装目录下创建一个用于存放证书的cert目录。
a.进入Apache的安装目录。
cd /etc/httpd/
#使用yum安装Apache的默认安装目录。如果您手动修改过该目录或使用其他方式安装的Apache,请根据实际配置调整。
b.创建cert目录。
mkdir cert #创建证书目录,命名为cert。
2.将证书文件和私钥文件上传到Apache服务器的证书目录(/etc/httpd/cert)。
3.编辑Apache配置文件httpd.conf和ssl.conf,修改与证书相关的配置。
a. 找到LoadModule ssl_module modules/mod_ssl.so(用于加载mod_ssl.so模块启用SSL服务) 和Include conf.modules.d/*.conf(用于加载SSL配置目录),并检查是否被注释,如果被注释,请删除#注释。
LoadModule ssl_module modules/mod_ssl.so:位于本文中**ssl.conf**该配置文件下。
Include conf.d/*.conf : 位于本文中**httpd.conf**该配置文件下。
b.未找到 文件,则可执行yum install -y mod_ssl命令安装,httpd -M | grep ‘ssl’ 命令检查mod_ssl.so是否安装成功
如果仍未找到以上参数,请确认您的Apache服务器中是否已经安装mod_ssl.so模块。如未安装,可执行yum install -y mod_ssl命令安装,安装后,可执行httpd -M | grep 'ssl'命令检查mod_ssl.so是否安装成功。
c.执行以下命令,打开ssl.conf配置文件。
vim /etc/httpd/conf.d/ssl.conf
d.在ssl.conf配置文件中,定位到以下参数,按照中文注释修改
<VirtualHost *:443>
#修改为申请证书时绑定的域名。
ServerName www.pwx.com
# 古籍检索系统 ,重定向到tomcat 中古籍检索系统项目
ProxyPass /record http://127.0.0.1:8080/record
ProxyPassReverse /record http://127.0.0.1:8080/record
#虚拟仿真,重定向到tomcat 中虚拟仿真项目
ProxyPass /wave http://127.0.0.1:8080/wave
ProxyPassReverse /wave http://127.0.0.1:8080/wave
# 公众号,重定向到tomcat 中 公众号项目
ProxyPass /pwxaccount http://127.0.0.1:8080/pwxaccount
ProxyPassReverse /pwxaccount http://127.0.0.1:8080/pwxaccount
# 将domain_name_public.crt替换成您证书文件名。
SSLCertificateFile cert/domain_name_public.crt
# 将domain_name.key替换成您证书的密钥文件名。
SSLCertificateKeyFile cert/domain_name.key
# 将domain_name_chain.crt替换成您证书的证书链文件名。
SSLCertificateChainFile cert/domain_name_chain.crt
#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
SSLEngine on
# 添加SSL协议支持协议,去掉不安全的协议。
SSLProtocol all -SSLv2
# 修改加密套件。
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
</VirtualHost>
#如果证书包含多个域名,复制VirtualHost参数,并将ServerName修改为第二个域名。
<VirtualHost *:443>
ServerName #修改为申请证书时绑定的第二个域名。
SSLCertificateFile cert/domain_name2_public.crt # 将domain_name2替换成您申请证书时的第二个域名。
SSLCertificateKeyFile cert/domain_name2.key # 将domain_name2替换成您申请证书时的第二个域名。
SSLCertificateChainFile cert/domain_name2_chain.crt # 将domain_name2替换成您申请证书时的第二个域名。
SSLEngine on
SSLHonorCipherOrder on
#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
#SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。
#SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。
</VirtualHost>
步骤三:. 配置Tomcat 得server.xml 文件
(1) 配置Tomcat server.xml 文件,添加proxyPort和scheme如下图:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
proxyPort="443"
scheme="https"
/>
或者
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
/>
步骤四:重启启动Tomcat和Apache
a. 控制Apache 的操作命令
# 启动Apache命令
service httpd start
# 重新 启动Apache命令
service httpd restart
# 停止Apache命令
service httpd stop
# 启动Apache命令
service httpd status
b. 控制Tomcat的操作命令
# 启动Tomcat命令
sh startup.sh
# 停止Tomcat命令
sh shutdown.sh
c.控制Nginx的操作命令
# 开启nginx
./nginx
# 重启nginx
./nginx -s reload
# 查询nginx主进程号
ps -ef|grep nginx
# 杀死进程
kill -TERM 进程号
# 停止nginx
nginx -s stop
d.重启mysql操作命令
# 使用service 命令重启
service mysql restart