公司起步阶段项目部署在阿里云单台ECS上,由一个tomcat应对不多的请求,ssl使用的沃通的vo证书,由tomcat负责强制https。后期由于业务的发展,单台服务器负载已经很高,稳定下下降,逐考虑拓展硬件配置,购买了LBS,陆续增加了3台ECS,考虑将SSL证书配置到LBS上,后端tomcat只启用80端口,于是开工。
一、迁移SSL证书
- 获取SSl证书
沃通购买的证书包含以下五个压缩包:
解压for Nginx.zip得到两个文件:
- 安装SSL证书
SLB :负载均衡–>证书管理–>创建证书
解压得到for nginx 2个文件,使用notepad++、UltraEdit、写字板(不要使用记事本)将xxx.crt文件打开,删除—–END CERTIFICATE—–后面的空行(一共三个)
—–END CERTIFICATE—–
(删除这个空行)
—–BEGIN CERTIFICATE—–
将crt文件中的三段内容粘贴到“证书内容”中,将xxx.key文件黏贴到“私钥”。
证书region(证书区域)勾选和购买的服务器区域一致,点击确认,完成证书的创建。
注意:切记,用for nginx 的证书,删除证书中间的空格,不要用记事本打开,如果出现pc端可以访问,手机端不能访问,就只这里没有按要求操作。
二、配置监听
前端协议选https(443),后端用http(80),服务器证书选择刚才创建的证书。后端的tomcat目前监听80端口,监听创建后,使用https访问应该是可以了。然后需要再添加http监听,前端协议http(80),后端仍然为80,如此https、http应该都生效了。
三、强制https
为了实现http访问转https,并且实现更便捷的访问控制,ECS上在tomcat之外,又安装了nginx,用来实现http转https以及做一些简单的恶意访问拦截。安装nginx后,tomcat端口仅配置为8080,不再处理https请求,nginx配置监听80端口和81端口,81端口重定向到https。
1. nginx配置如下:
server {
listen 80;
server_name www.xxxxx.com;
root /usr/tomcat7/webapps/ROOT;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
access_log logs/host80.access.log main;
}
server {
listen 81;
return 301 https://www.xxxx.com$request_uri;
}
- 阿里云LBS配置
阿里云LBS http监听后端端口改为81:
此时访问https443端口,nginx80交由tomcat8080处理,访问http80端口,nginx81端口接收后转到https443。