当前位置: 首页 > article >正文

自建CA实战之 《0x01 Nginx 配置 https单向认证》

自建私有化证书颁发机构(Certificate Authority,CA)实战之 《0x01 Nginx 配置 https单向认证》

上一篇文章我们介绍了如何自建私有化证书颁发机构(Certificate Authority,CA),本篇文章我们将介绍如何使用自建的CA颁发的证书来配置Nginx的https单向认证。为了方便环境的搭建,以下使用docker来搭建nginx https 环境。

docker 环境的准备

主机环境:

ifconfig |grep inet
inet 127.0.0.1 netmask 0xff000000 
inet 192.168.1.12 netmask 0xffffff00 broadcast 192.168.1.255
inet 192.168.85.1 netmask 0xffffff00 broadcast 192.168.85.255
inet 192.168.22.1 netmask 0xffffff00 broadcast 192.168.22.255

当前主机有多个内网IP,我们可以用一张证书,包含多个IP,也可以用多张证书,每个IP对应一张证书。

这里我们使用单张证书的方式。计划包含的IP如下:

  • 127.0.0.1
  • 192.168.1.12
  • 192.168.85.1
  • 192.168.22.1

新建一个测试目录,创建3个文件夹及docker-compose.yml文件,命令如下:

mkdir {html,conf.d,ssl}
touch docker-compose.yml

docker-compose.yml 的内容如下:

version: '2.1'
services:
  nginx:
    image: nginx
    # restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./html:/usr/share/nginx/html:ro
      - ./conf.d:/etc/nginx/conf.d:ro
      - ./ssl:/etc/nginx/ssl:ro

其中目录分别为:

  • ./html 为nginx的静态资源目录
  • ./conf.d 为nginx的配置文件目录
  • ./ssl 为nginx的证书目录。

创建nginx的配置文件./conf.d/default.conf,内容如下:

server {
    listen       80; # 监听 80 端口
    listen 443 ssl;  # 监听 443 端口,用于SSL
    server_name  _; # 默认主机名/域名,这里我们不设置域名,所以用下划线代替
    ssl_certificate ssl/web.crt; # 导出的证书
    ssl_certificate_key ssl/web.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;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

创建nginx的静态资源文件./html/index.html,内容如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>nginx https 单向认证</title>
</head>
<body>
    <h1>nginx https 单向认证</h1>
</body>
</html>

证书的准备

创建密钥

私钥 - 创建密钥 - 输入内部名称 - 确定

在这里插入图片描述

创建证书

证书-创建证书

来源

在这里插入图片描述

选中【使用此CA证书进行签名】,并在后面下拉框选择你创建的CA

在【使用模版创建新证书】的下拉框中,选择 [default] TLS_server

主体

在这里插入图片描述

在主体选项卡里,填上一些信息:

  • 内部名称:主要为了方便识别
  • [countryName] 国家:填写你所在的国家,这里我们填写 CN
  • [stateOrProvinceName] 省份:填写你所在的省份,这里我们填写 GuangXi
  • [localityName] 地区:填写你所在的地区,这里我们填写 Nanning
  • [organizationName] 组织:填写你所在的组织,这里我们填写 docker-nginx
  • [organizationalUnitName] 组织单位:填写你所在的组织单位,这里我们填写 docker-nginx
  • [commonName]通用名称:填写你的域名或者IP地址,这里我们填写 127.0.0.1,如果证书只针对单个域名或IP,填这里就够了。
  • [emailAddress] 电子邮件地址:填写你的邮箱地址,这里我们填写 taills@qq.com

在私钥下拉框中,选择我们上一步创建的私钥。

扩展

在这里插入图片描述

这里我们需要扩展所有的IP地址,设置如上图所示

IP:127.0.0.1, IP:192.168.1.12, IP:192.168.22.1, IP:192.168.85.1

如果想使用域名,就选择DNS类型。

密钥用法

在这里插入图片描述

选中 【TLS Web Server Authentication】,这里我们只需要用到这个。字面意思就是用于web服务器认证。

点击【确定】创建证书。

导出证书

在这里插入图片描述

选择我们创建的docker-nginx证书,点击【导出】,导出crt格式的证书。

在这里插入图片描述

相应的,我们导出名为docker-nginx的私钥,导出PEM private(*.pem)格式的私钥。
在这里插入图片描述

把导出的证书和私钥,放到我们的./ssl目录下。分别重命名为web.crtweb.key

其中:

  • web.crt 为证书
  • web.key 为私钥

启动nginx

docker-compose up

测试访问

用 https 协议访问,内容正常显示且浏览器地址栏显示上锁了,说明配置成功。

在这里插入图片描述

查看证书详情,可以看到证书的信息。

在这里插入图片描述


http://www.kler.cn/a/146861.html

相关文章:

  • 【嵌入式】关于push老仓库到新仓库的方法
  • 台式电脑没有声音怎么办?台式电脑没有声音解决详解
  • ES6进阶知识二
  • 蓝队基础之网络七层杀伤链
  • STL序列式容器之stack
  • SQL面试题——抖音SQL面试题 最大在线用户数
  • C#线程 ConcurrentQueue安全队列介绍
  • Redis-性能优化
  • 视频号小店是什么?新手入驻需要什么条件?一篇详解!
  • tp8 使用rabbitMQ(1)简单队列
  • 企业联系方式真的那么难获取吗?
  • 力扣6:N字形变化
  • 【C语法学习】28 - 字符测试函数
  • 语音识别学习笔记
  • 【云备份】数据管理模块
  • 【MyBatisPlus】通俗易懂 快速入门 详细教程
  • 代码随想录算法训练营第五十七天|739. 每日温度、496.下一个更大元素 I
  • java学习part13Object类和常用方法
  • C#中的事件(委托的发布和订阅、事件的发布和订阅、EventHandler类、Windows事件)
  • scoop bucket qq脚本分析(qq绿色安装包制作)
  • UDP客户端使用connect与UDP服务器使用send函数和recv函数收发数据
  • 蚂蚁庄园小课堂答题今日答案最新
  • 【腾讯云云上实验室】用向量数据库—实践相亲社交应用
  • 数据结构 | TOP-K问题
  • Linux安装Tesseract-OCR(操作系统CentOS)
  • H3C网络管理系统任意文件读取漏洞复现 [附POC]