nginx系列-06-nginx配置https并转发请求至后端tomcat-商用https证书

  • 前言
  • 环境准备
  • 申请https证书
  • nginx启用https
  • tomcat-serverxml配置
  • 效果预览

前言

上一篇,我们介绍了nginx启用https,但是使用的证书是私有CA颁发的。
这种私有证书出来个人练习或者在内部使用外,还真不知道有什么其他用途。

现在,我们来体验体验真正的商用https证书。

1 环境准备

  • 域名
    • 本人这里是在阿里云买的域名
    • 只要你想买的域名不是 google.com或在baidu.com这种白金次的话,一般都不贵吧……
    • 域名备不备案在这里无所谓了
    • 将域名解析到你自己的服务器
  • 公网服务器
    • 本人这里使用的是阿里云主机
    • 得搞个公网主机,不然域名解析到哪里去呢?
  • https证书
    • 本人这里使用的是https://startssl.com/颁发的免费证书
    • 确实不错,免费的
    • 证书申请有疑问?请移驾:https://www.oschina.net/translate/switch-to-https-now-for-free?cmp

2 申请https证书

此处使用的是https://startssl.com/提供的免费https证书。

这部分有疑问的话,可以参考本人另一篇文章:http://blog.csdn.net/hylexus/article/details/53150333

# 本人申请证书后下载得到了一个hyl.xxx.tech.zip的压缩包
# 其中hyl.xxx.tech应该会用你自己的域名代替

# 该文件内容如下:

[root@hylexus https]# tree
.
├── ApacheServer.zip # apache/httpd
├── IISServer.zip # MS-IIS
├── NginxServer.zip # Nginx
└── OtherServer.zip # 其他服务器

这里我们使用NginxServer.zip中的文件进行后续操作.

# 解压后得到文件:1_hyl.xxx.tech_bundle.crt

# 为方便后续操作,将该文件重命名为nginx.crt
# 并将其移动至nginx配置文件目录下新建的ssl目录下


mkdir /etc/nginx/ssl
# 证书文件nginx.crt
cp 1_hyl.xxx.tech_bundle.crt /etc/nginx/ssl/nginx.crt

# 应用程序秘钥nginx.key
# 名字随意,这个文件是你自己生成CSR的时候用的秘钥文件
cp nginx.key /etc/nginx/ssl/nginx.key

3 nginx启用https

此时的ssl目录:

[root@hylexus ssl]# pwd
/etc/nginx/ssl
[root@hylexus ssl]# tree
.
├── nginx.crt # 申请的https证书
└── nginx.key # 应用程序私钥

基于域名的虚拟主机配置

server{
    # 同时支持http和https
    listen  80;
    listen  443 ssl;
    server_name hyl.xxx.tech;
    access_log  /var/log/nginx/hyl.xxx.tech.access.log;

    keepalive_timeout   70;

    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
    ssl_certificate     /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;

    location / {
        #root   /usr/share/nginx/html;
        index  dashboard index;
        proxy_pass http://127.0.0.1:8080/;
        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 $scheme;
    }

}

4 tomcat-server.xml配置

Connector等的配置按自己的喜好来
此处应该注意的地方是在你的虚拟主机下加一个 Valve

# 注意几个请求头和nginx虚拟主机的配置中应该是对应的
# X-Forwarded-For、X-Forwarded-Proto等
"org.apache.catalina.valves.RemoteIpValve" 
    remoteIpHeader="X-Forwarded-For" 
    protocolHeader="X-Forwarded-Proto" 
    protocolHeaderHttpsValue="https"/>

5 效果预览

nginx系列-06-nginx配置https并转发请求至后端tomcat-商用https证书_第1张图片

你可能感兴趣的:(nginx,tomcat,安全)