美文网首页httpsPHP经验分享https
nginx系列-05-基于openSSL配置HTTPS

nginx系列-05-基于openSSL配置HTTPS

作者: hylexus | 来源:发表于2016-11-09 22:21 被阅读97次

    [TOC]

    1 说明

    此处介绍在CentOS6.8系统上,使用openSSL建立私有CA,并颁发证书,以配置 nginx 支持https。

    2 创建私有CA(私有CA生成自签署的证书)

    这部分的相关内容请看本人的另一篇文章
    http://blog.csdn.net/hylexus/article/details/53058135
    http://www.jianshu.com/p/7ad4846a2f38

    或者此处用真正互联网通用的证书也是一样的。

    3 为nginx配置SSL支持

    # 此处在ssl目录下进行操作,位置按自己的需要吧
    [root@h1 ssl]# pwd
    /etc/nginx/ssl
    

    3.1 生成私钥

    [root@h1 ssl]# (umask 077;openssl genrsa -out nginx.key 1024)
    

    3.2 生成证书颁发请求

    # 按要求填写相关信息即可
    [root@h1 ssl]# openssl req -new -key nginx.key -out nginx.csr
    

    3.3 颁发证书

    此处使用私有CA颁发,并且本人的CA和httpd在同一台主机上。

    # 由于此处CA和httpd在同一台主机上,所有直接将颁发的证书放置到了/etc/nginx/ssl/nginx.crt目录
    [root@h1 ssl]# openssl ca -in /etc/nginx/ssl/nginx.csr -out /etc/nginx/ssl/nginx.crt -days 365
    

    3.4 nginx 配置

    未启用https前的虚拟主机简单配置如下:

    server{
        listen  80;
        server_name h3.hylexus.tech;
        access_log  /logs/aaa.access.log;
        location /{
            index index.html;
            root /web/html/h3.hylexus.tech;
        }
    }
    

    注意修改hosts文件,将域名加进去

    [root@h1 conf.d]# cat /etc/hosts
    # ………………
    127.0.0.1       localhost.localdomain localhost h3.hylexus.tech
    192.168.161.128 h1 h3.hylexus.tech
    # ………………
    

    先确保使用http协议能访问的虚拟主机之后再继续下文。

    先用http协议访问 http://h3.hylexus.tech试试。成功后继续下文。

    启用HTTPS

    server{
        # 同时支持http和https
        listen  80;
        listen  443 ssl;
        server_name h3.hylexus.tech;
        access_log  /logs/aaa.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 /{
            index index.html;
            root /web/html/h3.hylexus.tech;
        }
    }
    

    3.5 访问

    https://h3.hylexus.tech

    记得修改hosts文件,因为这个域名纯粹是瞎编的……

    当然浏览器会告警说证书来源不可信之类的,不告警才怪呢……除非你的证书是互联网通用的而不像我们这里自己给自己颁发的……

    相关文章

      网友评论

      • abyte:问一个问题,只能有一个443端口吗?如果我服务器:arrow_up:️配置了两个server,一个端口80,一个8080,想让他们都支持https,怎么搞
        hylexus:@abyte nginx至少支持三种虚拟主机:基于域名、基于IP和基于端口的虚拟主机。
        你可以配置基于域名或IP的虚拟主机

      本文标题:nginx系列-05-基于openSSL配置HTTPS

      本文链接:https://www.haomeiwen.com/subject/odptpttx.html