ssl部署——tomcat+nginx

申请ssl证书

  1. 可以在下面的网站申请ssl证书
https://freessl.cn/
  1. 输入网址——创建证书
    ssl部署——tomcat+nginx_第1张图片
  2. 输入邮箱——选择证书类型RSA——认证方式DNS——游览器生成——点击创建
    ssl部署——tomcat+nginx_第2张图片

注:可以自行在服务器上使用openssl生成私钥和CSR文件,然后此处选择我有CSR文件即可.详细生成步骤自行百度.

  1. 根据提示在DNS服务商处,添加一条TXT解析.此处以阿里云为例.
    ssl部署——tomcat+nginx_第3张图片

ssl部署——tomcat+nginx_第4张图片

  1. 将下载的证书文件上传到服务器
  2. 修改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";
}
  1. 修改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
  1. 测试
[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. 注意事项
1. 云服务器需要在安全组开启443端口
2. 或者iptables开放443端口

你可能感兴趣的:(ssl,https,tomcat,nginx,linux,笔记)