Nginx + Tomcat + Https配置

  • 前言
  • 证书申请
    • 资料完善
    • 域名申请
  • 证书配置
    • 添加域名解析
    • 本地证书配置
    • 本地文件验证
  • 测试
    • https测试
    • nginx如何将http请求转成https
  • 总结
  • 前言

    近期业务需要,进行小程序的开发,但是在小程序里面请求必须要https才能正常请求数据,为了方便测试,在腾讯云SSL证书上申请了一个个人版的SSL证书进行测试;并在此记录整个配置的过程。

    证书申请

    申请入口如下图: 
    Nginx + Tomcat + Https配置_第1张图片

    资料完善

    进入以上入口需要完善个人资料并进行实名认证;如实填写资料,next–>next–>finish即可

    域名申请

    按如下步骤一步步填写完成

  • 第一步 
    Nginx + Tomcat + Https配置_第2张图片

  • 第二步 
    填写域名信息及申请人邮箱等资料 Nginx + Tomcat + Https配置_第3张图片

  • 第三步 
    Nginx + Tomcat + Https配置_第4张图片
    Nginx + Tomcat + Https配置_第5张图片

  • 第四步 
    将得到一下记录值信息 
    Nginx + Tomcat + Https配置_第6张图片

  • 证书配置

    添加域名解析

  • 找到前一步中生成的记录值,添加的域名解析中,如下图中的文本信息: 
    Nginx + Tomcat + Https配置_第7张图片
  • 添加到如下图中的域名解析中: 
  • 添加完成之后刷新,如果出现下图内容,说明域名解析配置成功: 
    Nginx + Tomcat + Https配置_第8张图片
  • 点击下载按钮,下载证书文件 
     
    Nginx + Tomcat + Https配置_第9张图片 
    其中包含了4种容器的配置证书;
  • 本地证书配置

    所有容器的证书的配置,可参考腾讯云官网配置说明,本文以Nginx做配置演示说明:

  • 解压下载的证书,找到nginx证书文件夹,可看见以下文件: 

  • 将2个文件拷贝纸nginx下的conf文件夹,如下图: 
    Nginx + Tomcat + Https配置_第10张图片

  • 修改ngnix的nginx.conf配置文件

        server 
        {
                listen  443 ssl;
                server_name www.test.com; #填写绑定证书的域名
                ssl on;
                ssl_certificate 1_www.test.com_bundle.crt;
                ssl_certificate_key 2_www.test.com.key;
                ssl_session_timeout 5m;
                ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
                ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
                ssl_prefer_server_ciphers on;
         }
  • 本地文件验证

  • 找到如下图的记录值: 
    Nginx + Tomcat + Https配置_第11张图片

  • 本地创建以下文件目录、文件名及文件内容:

    文件目录 文件名 文件内容
    /.well-known/pki-validation fileauth.txt 201708*****(根据自己实际的只填写)

    注:window下创建.well-known文件夹时,会提示“请输入文件名”的错误信息,无法创建,可以按如下方式创建,进入cmd下,进入要穿件文件夹的盘,输入mkdir .well-known即可创建,如下图: 
    Nginx + Tomcat + Https配置_第12张图片

    • 如果申请文件验证的域名是www.test.com,那么进行验证访问的链接地址是 http://www.test.com/.well-known/pki-validation/fileauth.txt 或者 https://www.test.com/.well-known/pki-validation/fileauth.txt
    • 如果申请文件验证的域名是泛域名*.test.com,那么进行验证访问的链接地址是 http://test.com/.well-known/pki-validation/fileauth.txt 或者 https://test.com/.well-known/pki-validation/fileauth.txt
    • 成功之后,文件结构如下: 
      Nginx + Tomcat + Https配置_第13张图片
  • nginx配置文件请求映射

            location /.well-known/pki-validation/
            {
                root E:/本地文件地址/;
            }

    如前端请求:https://www.test.com/.well-known/pki-validation/fileauth.txt之后,nginx会指向本地E:/本地文件地址/.well-known/pki-validation/fileauth.txt文件 
    重启nginx

  • 测试

    https测试

    浏览器输入:https://www.test.com/.well-known/pki-validation/fileauth.txt可得到一下以下效果: 

    nginx如何将http请求转成https

    开发过程中,可能是中途才使用到https,之前一直是使用的http,如果按以上配置,配置了https之后,再发起http请求将无法正常的请求到;为了兼容到之前的http服务,我们可在nginx下添加一个http的服务,然后将请求转发到https即可,配置如下: 

    server 

    listen 80; 
    server_name www.test.com; 
    rewrite ^/(.*) https://$server_name/$1 permanent; #跳转到Https 


    重启nginx并测试: 
    浏览器输入:http://www.test.com/.well-known/pki-validation/fileauth.txt将会被转发到:https://www.test.com/.well-known/pki-validation/fileauth.txt

    总结

    到这里ssl的证书配置即完成。

  • 然后修改nginx配置文件 sudo vi /etc/nginx/nginx.conf 

    加上一个监听服务

     

     
  • upstream tomcat {

  • server 127.0.0.1:8080 fail_timeout=0;

  • }

  •  
  • # HTTPS server

  • server {

  • listen 443 ssl;

  • server_name www.lilub.cn;#这里是你的域名,要与下面tomcat里的保持一致

  •  
  • ssl_certificate cert/abc.pem;

  • ssl_certificate_key cert/abc.key;

  •  
  • ssl_session_cache shared:SSL:1m;

  • ssl_session_timeout 5m;

  •  
  • ssl_ciphers HIGH:!aNULL:!MD5;

  • ssl_prefer_server_ciphers on;

  • location / {

  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  • proxy_set_header Host $http_host;

  • proxy_set_header X-Forwarded-Proto https;

  • proxy_redirect off;

  • proxy_connect_timeout 240;

  • proxy_send_timeout 240;

  • proxy_read_timeout 240;

  • # note, there is not SSL here! plain HTTP is used

  • proxy_pass http://tomcat;

  • }

  • }

  • 然后我们进入tomcat,

    cd  你的tomcat路径/conf/

    vi  server.xml

    找到

     

     
  • connectionTimeout="20000"

  • redirectPort="443"

  • proxyPort="443" />


  • 然后修改HOST里的value值,我这里修改为

     

     
  • unpackWARs="true" autoDeploy="true">

  •  
  • remoteIpHeader="x-forwarded-for"

  • remoteIpProxiesHeader="x-forwarded-by"

  • protocolHeader="x-forwarded-proto" />


  • 简单的一匹吧,整个过程不超过五分钟,你就可以通过https访问了。

    更多信息可以访问我的个人网站:https://www.lilub.cn

  •  

你可能感兴趣的:(Nginx + Tomcat + Https配置)