项目要上线,需要把http变成https,作为安全防护的一个手段。
如果不走https,只用http有什么问题?
- 其一,通过抓包,可以看到你全部的数据。
- 其二,通过抓包,在你的页面数据上放一些广告。
- 还有更多,就不列举了。
如果走https,都需要哪些条件?
如果是demo项目的话,可以使用JDK自己签发SSL证书,这个如果只是后台访问接口,https没问题,如果是页面在googel浏览器展示,然后去调用https的接口就有问题了,谷歌浏览器说这个证书我不认可。
所以就有了第一个需求:一个浏览器都认可的ssl证书。这个可以通过在阿里云上去购买。不过也有免费的的案例级别的。这里不做过多的介绍了,直接放一个链接。看看怎么搞到浏览器认可的ssl证书。但是获取SSL证书有一个前提条件,就是有一个备案的域名。
域名备案,这个过程就自己解决吧。如何在阿里云上获取免费的SSL证书
有的SSL证书,应该把SSL证书放在哪个来开启https的访问方式
下载SSL证书,这个应该是看了前边的步骤,已经申请到了SSL证书
如果是demo项目,不走nginx,前后端直接交互
这种交互,把SSL证书放在tomcat是可以的。不过如果是springboot项目,可以一起打包到jar里边。
具体操作流程看这篇文章比较详细了:https://blog.csdn.net/jinchunzhao123/article/details/93142082
如果是域名访问的上线的项目
线上的项目一般是这样的架构
基本架构是硬负载(ReadWhere)+ 软负载(Nginx)+ Tomcat集群。这里用到了nginx,直接发证书放在nginx是比较好一点的。现在前后端都是分离的,一方面是需要部署前端页面,一方面是后台服务。所以在nginx部署一次也是比较省事的,本身nginx也是支持的。
看一下如果SSL证书放nginx应该怎么办选择对应自己服务器的证书下载。我这里试用的是nginx服务器。下载下来的压缩包解压之后会获得一个.pem和一个.key的文件。将文件上传到自己服务器。试用FileZilla Client上传文件到服务器的nginx的配置文件目录下面。新建cert文件夹
将上传的文件放到cert目录下面。然后修改nginx.conf的配置文件
# HTTPS server
# #server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
#
#
#}
#}
修改为一下的形式:注意带ssl的都需要配置,请仔细核对
server {
listen 443;
server_name localhost;
ssl on;
root html;
index index.html index.htm;
ssl_certificate cert/214897021540762.pem;
ssl_certificate_key cert/214897021540762.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
配置完之后保存退出。 重启nginx服务器使配置生效。
这样你的服务器在访问的时候就可以使用https的方式请求了。