nginx结合openssl实现https的方法


Posted in Servers onJuly 25, 2021

在未使用SSL证书对服务器数据进行加密认证的情况下,用户的数据将会以明文的形式进行传输,这样一来使用抓包工具是可以获取到用户密码信息的,非常危险。而且也无法验证数据一致性和完整性,不能确保数据在传输过程中没被改变。所以网站如果有涉及用户账户等重要信息的情况下通常要配置使用SSL证书,实现https协议。

在生产环境中的SSL证书都需要通过第三方认证机构购买,分为专业版OV证书(浏览器地址栏上不显示企业名称)和高级版EV(可以显示企业名称)证书,证书所保护的域名数不同也会影响价格(比如只对www认证和通配*认证,价格是不一样的),且不支持三级域名。测试中可以自己作为证书颁发机构来制作证书,浏览器会显示为红色,代表证书过期或者无效,如果是黄色的话代表网站有部分连接使用的仍然是http协议。

不管使用哪种方法,在拿到证书后对Nginx的配置都是一样的,所以这里以搭建OpenSSL并制作证书来进行完整说明

一、准备环境

1)nginx服务

2)ssl模块

[root@ns3 ~]# systemctl stop firewalld
[root@ns3 ~]# iptables -F
[root@ns3 ~]# setenforce 0
[root@ns3 ~]# yum -y install pcre zlib pcre-devel zlib-devel
[root@ns3 ~]# tar xf nginx-1.16.0.tar.gz -C /usr/src/
[root@ns3 ~]#cd /usr/src/nginx-1.16.0
[root@ns3 ~]#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module&&make && make install #后续需要的模块一次性安装

3)检测openssl是否安装

[root@ns3 ~]# rpm -qa openssl 2 openssl-1.0.1e-42.el7.x86_64

若没有安装

[root@ns3 ~]# yum -y install openssl openssl-devel

二、创建根证书CA

1、生成CA私钥

[root@ns3 ~]# cd zhengshu/
[root@ns3 zhengshu]# openssl genrsa -out local.key 2048
Generating RSA private key, 2048 bit long modulus
...........................................................................................................................................................................................................................+++
............................................................................................................................................................................................+++
e is 65537 (0x10001)
[root@ns3 zhengshu]# ls
local.key

 2、生成CA证书请求

[root@ns3 zhengshu]# openssl req -new -key local.key -out local.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN  #国家
State or Province Name (full name) []:BJ   #省份
Locality Name (eg, city) [Default City]:BJ  #城市
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:test   #部门
Common Name (eg, your name or your server's hostname) []:test   #主机名
Email Address []:test@test.com  #邮箱

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:wuminyan  #密码
An optional company name []:wuminyan  #姓名
[root@ns3 zhengshu]# ls
local.csr  local.key
req: 这是一个大命令,提供生成证书请求文件,验证证书,和创建根CA
 -new: 表示新生成一个证书请求
 -x509: 直接输出证书
 -key: 生成证书请求时用到的私钥文件
 -out:输出文件

3、生成CA根证书

这个生成CA证书的命令会让人迷惑
1.通过秘钥 生成证书请求文件
2.通过证书请求文件 生成最终的证书
 -in 使用证书请求文件生成证书,-signkey 指定私钥,这是一个还没搞懂的参数
[root@ns3 zhengshu]# openssl x509 -req -in local.csr -extensions v3_ca -signkey local.key -out local.crt
Signature ok
subject=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/OU=test/CN=test/emailAddress=test@test.com
Getting Private key

三、根据CA证书创建server端证书

1、生成server私匙

[root@ns3 zhengshu]# openssl genrsa -out my_server.key 2048
Generating RSA private key, 2048 bit long modulus
.................................+++
.........................................+++
e is 65537 (0x10001)
[root@ns3 zhengshu]# ls
local.crt  local.csr  local.key  my_server.key

2、生成server证书请求

[root@ns3 zhengshu]# openssl x509 -req -in local.csr -extensions v3_ca -signkey local.key -out local.crt
Signature ok
subject=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/OU=test/CN=test/emailAddress=test@test.com
Getting Private key
[root@ns3 zhengshu]# openssl genrsa -out my_server.key 2048
Generating RSA private key, 2048 bit long modulus
.................................+++
.........................................+++
e is 65537 (0x10001)
[root@ns3 zhengshu]# openssl req -new -key my_server.key -out my_server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:test
Common Name (eg, your name or your server's hostname) []:test
Email Address []:test@test.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:wuminyan
An optional company name []:wuminyan
[root@ns3 zhengshu]# ls
local.crt  local.csr  local.key  my_server.csr  my_server.key

3、生成server证书

[root@ns3 zhengshu]# openssl x509 -days 365 -req -in my_server.csr -extensions v3_req -CAkey local.key -CA local.crt -CAcreateserial -out my_server.crt
 Signature ok
 subject=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/OU=test/CN=test/emailAddress=test@test.com
 Getting CA Private Key

四、配置nginx支持SSL

[root@ns3 ~]# vim /etc/nginx.cof      #这里设置了一个软连接:lln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
server {
        listen 80;
        listen       443 default  ssl;  #监听433端口
                keepalive_timeout 100;  #开启keepalive 激活keepalive长连接,减少客户端请求次数

                   ssl_certificate      /root/zhengshu/local.crt;   #server端证书位置
                   ssl_certificate_key  /root/zhengshu/local.key;   #server端私钥位置

                        ssl_session_cache    shared:SSL:10m;         #缓存session会话
                        ssl_session_timeout  10m;                    # session会话    10分钟过期

                   ssl_ciphers  HIGH:!aNULL:!MD5;
                   ssl_prefer_server_ciphers  on;

        server_name   test.com;
        charset utf-8;

        location / {
            root   html;
            index  index.html index.htm;
        }

    }
}

五、测试

输入https://192.168.200.115

nginx结合openssl实现https的方法

nginx结合openssl实现https的方法

nginx结合openssl实现https的方法

到此这篇关于nginx结合openssl实现https的文章就介绍到这了,更多相关nginx实现https内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
nginx搭建图片服务器的过程详解(root和alias的区别)
Mar 31 Servers
Nginx反向代理配置的全过程记录
Jun 22 Servers
nginx反向代理配置去除前缀案例教程
Jul 26 Servers
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
Sep 25 Servers
Linux、ubuntu系统下查看显卡型号、显卡信息详解
Apr 07 Servers
Ubuntu Server 安装Tomcat并配置systemctl
Apr 28 Servers
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
Apr 29 Servers
配置nginx负载均衡
May 06 Servers
nginx 添加http_stub_status_module模块
May 25 Servers
Ubuntu安装Mysql+启用远程连接的完整过程
Jun 21 Servers
win10搭建配置ftp服务器的方法
Aug 05 Servers
CentOS7设置ssh服务以及端口修改方式
Dec 24 Servers
nginx配置虚拟主机的详细步骤
nginx的zabbix 5.0安装部署的方法步骤
nginx请求限制配置方法
使用goaccess分析nginx日志的详细方法
Jul 09 #Servers
nginx作grpc的反向代理踩坑总结
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
使用nginx配置访问wgcloud的方法
Jun 26 #Servers
You might like
CI框架简单邮件发送类实例
2016/05/18 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
python实现的文件夹清理程序分享
2014/11/22 Python
通过Python使用saltstack生成服务器资产清单
2016/03/01 Python
Python实现图片转字符画的示例
2017/08/22 Python
python实现飞机大战微信小游戏
2020/03/21 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
几个常见的消息中间件(MOM)
2014/01/08 面试题
会计找工作求职信范文
2013/12/09 职场文书
高中毕业自我评价
2014/02/08 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server