zoukankan      html  css  js  c++  java
  • 基于nginx结合openssl实现https

    实验环境:

    系统版本:centos7x3.10.0-514.el7.x86_64

    Nginx版本:nginx1.14.0

    关闭防火墙并禁止开机自启

    systemctl stop firewalld.service
    systemctl disable firewalld

    关闭selinux

    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

    修改主机名

    vi /etc/hostname

    nginx.wangfeiyu.com

    域名绑定IP

    vi /etc/hosts

    Centos7 配置Nginx实现HTTPS

    重启 reboot

    安装nginx服务

    升级nginx为https条件

    1、查看nginx是否支持ssl

    /usr/local/nginx/sbin/nginx -V
    Centos7 配置Nginx实现HTTPS
    注:查看 configure arguments 信息中是否包含 -with-http_ssl_module 字样,如果没有则需要重新编译。找到之前安装 Nginx 时的编译目录,配置ssl模块,因为这次是升级nginx,所以不需要执行 make install,执行命令如下:
    . /configure --with-http_ssl_module 
    make

    2、查看openssl配置文件

    vi /etc/pki/tls/openssl.cnf
    Centos7 配置Nginx实现HTTPS 
    注:以上截图默认就是这样的重要参数配置路径,如果你要配置修改路径,那么切记在后边签证书等等的操作都要按照这个配置路径去创建,不然当认证的时候会找不到证书!

    3、创建生成证书需要的文件

    1)创建证书索引数据库文件

    touch /etc/pki/CA/index.txt    

    2) 指定第一个颁发证书的序列号

    echo 01 > /etc/pki/CA/serial

    注:必须是两位十六进制数,99之后是9A!

    4、CA自签证书

    1)生成CA私钥

    cd /etc/pki/CA

    umask 066

    openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
    Centos7 配置Nginx实现HTTPS 
    注:进入到/etc/pki/CA/目录下执行这两条命令!

    2) 生成CA自签名证书

    openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
    Centos7 配置Nginx实现HTTPS 
    注释:
    -new: 生成新证书签署请求
    -x509: 专用于 CA 生成自签证书
    -key: 生成请求时用到的私钥文件
    -days n:证书的有效期限
    -out: 证书的保存路径
    提示输入国家,省,市,公司名称,部门名称,CA主机名(颁发者名称)

    4)查看生成的自签名证书

    //linux系统下查看

    openssl x509 -in /etc/pki/CA/cacert.pem -noout -text

    //windows系统下查看

    需要更改上述文件名后缀为.cer即可查看

    5、颁发证书

    1)在当前创建/root/key/目录

    mkdir key

    2)生成web服务器私钥

    cd key/

    umask 066

    openssl genrsa -out key/service.key 2048
    Centos7 配置Nginx实现HTTPS

    3) 生成CA证书申请文件

    openssl req -new -key service.key -out service.csr
    Centos7 配置Nginx实现HTTPS 
    注:同样提示输入国家、省、市、公司等信息。切记:国家,省,公司名称三项必须和CA一致。主机名称必须和网站域名相同,如www.centos73.com。或者使用泛域名,即*.centos73.com,匹配所有。

    4) 将证书文件移动到CA服务器/etc/pki/CA/crl/目录下

    mv service.csr /etc/pki/CA/crl/

    5) CA签署证书,并将证书颁发给请求者

    openssl ca -in /etc/pki/CA/crl/service.csr -out /etc/pki/CA/certs/service.crt -days 365
    Centos7 配置Nginx实现HTTPS

    错误1:

        wrong number of fields on line 1 (looking for field 6, got 1, '' left)

        原因是你的index.txt文件不为空,改为空文件即可。

        错误2:

        error while loading serial number

        3078239980:error:0D066096:asn1 encoding routines:a2i_ASN1_INTEGER:short line:f_int.c:215:

        原因:是因为serial文件中没有赋初值,即没有执行echo 01 > /etc/pki/CA/serial

    6)查看证书中的信息

    //查看自签证书

    openssl x509 -in 绝对路径 -noout –text | issuer | subject | serial | dates
    Centos7 配置Nginx实现HTTPS
    Centos7 配置Nginx实现HTTPS

    //查看颁发证书的序列号

    cat /etc/pki/CA/serial 
    Centos7 配置Nginx实现HTTPS

    //查看指定编号的证书状态

    openssl ca -status 1
    Centos7 配置Nginx实现HTTPS 
    注:这个编号是颁发的第几个证书,当前就一个所以是1!

    //查看证书详细信息

    cat /etc/pki/CA/index.txt
    Centos7 配置Nginx实现HTTPS 
    注:开头V表示当前证书的状态正常!

    //查看subjects信息
    Centos7 配置Nginx实现HTTPS 
    注:yes表示subjects信息必须是唯一的,不能重复申请!

    6、修改nginx配置文件

    vi /usr/local/nginx/conf/nginx.conf
    Centos7 配置Nginx实现HTTPS
    注:这里有一个坑就是默认的HTTPS SERVER这行必须删除,要不然一直报错!

    7、重启nginx服务

    /etc/init.d/nginx restart

    8、测试(建议使用Firefox浏览器测试)

    访问网页测试

    1)域名访问地址:https://nginx.wangfeiyu.com/

    Centos7 配置Nginx实现HTTPS
    注:以上截图访问方式使用的是https加密访问但是需要我们将证书导入浏览器才行!

    导入方式:

    //点击高级
    Centos7 配置Nginx实现HTTPS

    //点击添加列外
    Centos7 配置Nginx实现HTTPS

    //点击确认安全列外
    Centos7 配置Nginx实现HTTPS
    Centos7 配置Nginx实现HTTPS
    注:以上截图已经可以访问到网页,说明nginx加密成功或者证书导入成功!其他的浏览器导入证书方式不一样,但是超级简单,自行百度即可!

    2)IP访问地址:http://192.168.152.177/

    Centos7 配置Nginx实现HTTPS
    注:这种方式默认使用的还是http协议!也可以设置为通过http跳转到https!

    3)IP地址https访问:https://192.168.152.177/

    Centos7 配置Nginx实现HTTPS 
    注:以上截图访问方式使用的是https加密访问但是需要我们将证书导入浏览器才行!导入方式以上面方式相同。

  • 相关阅读:
    2020年“3D视觉工坊”视频号最受欢迎视频 Top 10!
    缓存一致性解决方案杂谈
    Mybatis的@Param注解在多参数时候不写,可以正确执行。
    Redis设计与实现之简单动态字符串
    YApi mac上部署
    拖拽方式生成Vue用户界面
    终于可以愉快的撸Java异步代码了!
    Windows 取证之ShellBags
    初识Fastjson漏洞(环境搭建及漏洞复现)
    mongo-express 远程代码执行漏洞分析
  • 原文地址:https://www.cnblogs.com/2567xl/p/11529672.html
Copyright © 2011-2022 走看看