申请ssl证书
- 可以在下面的网站申请ssl证书
https://freessl.cn/
- 输入
网址
——创建证书
- 输入邮箱——选择
证书类型RSA
——认证方式DNS
——游览器生成
——点击创建
注:可以自行在服务器上使用openssl生成私钥和CSR文件,然后此处选择我有CSR文件即可.详细生成步骤自行百度.
- 根据提示在DNS服务商处,添加一条TXT解析.此处以阿里云为例.
- 将下载的证书文件上传到服务器
- 修改Nginx配置文件(虚拟主机,若没有开启虚拟主机则在nginx.conf下配置)
vim vhost.conf ## 在nginx.conf定义的虚拟主机配置路径下创建并编辑。
内容如下:
upstream cxsw
{
server 127.0.0.1:8080;
}
server
{
listen 80;
listen 443 ssl;
server_name cxsw.xyz;
ssl_certificate /usr/local/nginx/cert/full_chain.pem;
ssl_certificate_key /usr/local/nginx/cert/private.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.3 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://cxsw;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_headers_hash_max_size 51200; ##设置头部哈希表的最大值,不能小于你后端服务器设置的头部总数
proxy_headers_hash_bucket_size 6400; ## 设置头部哈希表大小
}
if ( $scheme != "https" ) {
return 301 https://$host$request_uri; ##永久跳转到https
}
access_log /usr/local/nginx/logs/cxsw.logs "combined_realip";
}
- 修改tomcat的server.xml配置文件
vim server.xml
内容如下:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" ##连接超时时间
redirectPort="443" ##必须添加此行,如果发送的是https 请求. 就将请求转发到443端口
proxyPort="443"/> ##必须添加此行,配置此参数意味着在调用request.getServerName的时候将会获取代理服务器的名称,getServerPort()将会返回proxyPort。
<Host name="cxsw.xyz" appBase=""
unpackWARs="true" autoDeploy="true">
xmlValidation="false" xmlNamespaceAware="false">
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="x-forwarded-for"
remoteIpProxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto"
/>
<Alias>www.cxsw.xyz</Alias>
<Context path="" docBase="/cxsw.xyz/" debug="0" reloadable="true" crossContext="true"/>
Value 节点的配置也非常重要,否则你在 Tomcat 中的应用在读取 getScheme() 方法以及在 web.xml 中配置的一些安全策略会不起作用。
/usr/local/tomcat/bin/shutdown.sh && /usr/local/tomcat/bin/startup.sh
- 测试
[root@cxsw ~]# curl https://cxsw.xyz -I
HTTP/1.1 200
Date: Fri, 29 Mar 2019 03:00:50 GMT
Content-Type: text/html;charset=UTF-8
Connection: keep-alive
直接访问https成功
[root@cxsw ~]# curl http://cxsw.xyz -I
Date: Fri, 29 Mar 2019 03:01:50 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: https://cxsw.xyz/
访问http跳转https成功
- 注意事项
1. 云服务器需要在安全组开启443端口
2. 或者iptables开放443端口