Tomcat网站从HTTP升级为HTTPS

一、概述

在涉及到交易充值等操作的网站中,使用HTTPS提高系统安全性是非常有必要的。
我们一般是在已有的HTTP网站上面进行升级为HTTPS。下面,我就介绍一下在项目中如何将已有HTTP网站升级为HTTPS网站。我这里介绍的都是使用Tomcat部署的Java web应用程序。

二、准备工作

需要准备:ca证书和密钥key。自签名证书用于模拟可用十年。如果是购买正式证书,忽略这一步,发证机构会发来两个cer文件,一个是服务器证书,一个是根证书。我们在这里使用自签名证书。

2.1 openssl制证

  • 下载openssl制作私钥,执行以下命令后会在当前目录下的conf目录创建server.key
openssl genrsa -out conf/server.key 1024  
  • 制作给发证机关的请求证书,需要如实输入一些真实的信息,注意填写“common name(e.g.server FQDN or YOUR name)”时要填写你的域名:
openssl req -new -key conf/server.key -out conf/certreq.csr  

密码为空;

  • 生成自签名证书;自签名证书用于模拟可用十年。如果是购买正式证书,忽略这一步,发证机构会发来两个cer文件,一个是服务器证书,一个是根证书。
openssl x509 -req -in conf/certreq.csr -out conf/cert.cer -signkey conf/server.key -days 3650  

三、方案

3.1 方案一–不使用代理

直接配置Tomat:
1将证书文件 cert.cer和密钥文件server.key复制至tomcat的bin目录下。如果是购买正式证书,就把发证机构给你的两个证书文件放到bin目录下。
2. 修改tomcat的配置文件server.xml :将

1.	<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  
2.	           maxThreads="150" scheme="https" secure="true"  
3.	           clientAuth="false" sslProtocol="TLS" />  

取消注释并将它改成:

1.	Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol" SSLEnabled="true"  
2.	               maxThreads="150" scheme="https" secure="true"  
3.	        SSLCertificateFile="cert.cer"  
4.	        SSLCertificateKeyFile="server.key"  
5.	               sslProtocol="TLS" />  

如果只想用https访问,需要注释原来的8080窗口监听。
注意:在发布小程序时,只能在开发工具下访问,真机访问不了。需要使用正式证书才行!

3.2 方案二–使用nginx代理

在HTTP已经可以正常使用的情况下,通过nginx可以快速的配置HTTPS。
1将证书文件 cert.cer和密钥文件server.key复制至nginx的conf目录下。如果是购买正式证书,就把发证机构给你的两个证书文件放到bin目录下。
2. 修改nginx的配置文件nginx.conf :

worker_processes 1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile  on;
    keepalive_timeout  65; 

    error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  xgwx.ecut.edu.cn;
        ssl_certificate      cert.cer;
        ssl_certificate_key  server.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
           proxy_pass http://xgwx.ecut.edu.cn:80;
        }
    }
}

配置说明:该配置主要目的是将443端口的请求转发到http的80端口。
注意:如果出现无法访问静态资源的问题,那是因为资源路径(协议头)不对,应该为https实际为http。需要配置Tomcat的server.xml文件:

  <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000" scheme="https" secure="true"  
               redirectPort="8443" />

增加:

scheme="https" secure="true"  

启动nginx后,就可以通过https访问系统了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oyezitan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值