背景:项目架构比较老旧,一些项目tomcat容器部署,一些项目是springboot jar包发布。项目要求公网暴漏域需要添加https协议以确保安全性。
关于https升级方案有多种。以tomcat添加ssl证书或者nginx添加ssl证书转发https请求至http请求。
tomcat升级方式
1.首先需要获取ssl证书,根据域名去申请ca证书,这步可自行谷歌。
2.新建目录cret并将证书以及秘钥(秘钥非必须)上传至\tomcat8\cert某个目录下。
3.修改tomcat配置文件 tomcat8\conf\server.xml
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="1000" acceptCount="1000" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/appuser/tomcat8/cert/www.XXXXX.com.pfx" //证书放置路径
keystoreType="PKCS12" //证书类型
keystorePass="XXXXX" //证书密码
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256" />
注意的点:
port 对应的是https要部署的端口。https端口默认是443端口请求,根据业务自行确定部署端口。
keystoreFile="/appuser/tomcat8/cert/www.XXXXX.com.pfx" //证书放置路径
keystoreType="PKCS12" //证书类型
keystorePass="XXXXX" //证书秘钥
通过上述配置,重启tomcat容器项目就可以通过https请求访问。
如需兼容http请求则需要再配置一个Connector 配置。
nginx升级方式
1.首先需要安装nginx 这块参考nginx安装
2.证书找一个目录放置,nginx需要证书秘钥一起放至目录下。(nginx证书与tomcat证书是不同类型的。这块在申请下载证书时自行区分)
3.配置nginx.conf配置文件
# HTTPS server
server {
listen 2000 ssl;
server_name xxxxxxxxxxxx;
ssl_certificate /usr/local/etc/www.XXXX.com.pem;
ssl_certificate_key /usr/local/etc/www.XXXX.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /xxx {
proxy_pass http://IP:端口号/请求路径;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
注意的点:
listen 监听的端口号
server_name 当前服务器域名
ssl_certificate nginx证书
ssl_certificate_key 证书秘钥
启动nginx此时就能将 https 请求在2000端口上的url通过nginx代理转发的形式把所有http的请求升级成https协议。