Linux中Https配置与私有CA部署指南

一、HTTPS 核心概念

特性HTTPHTTPS
协议明文传输HTTP + SSL/TLS
端口80443
加密未加密数据加密

二、SSL/TLS 握手流程

  1. Client → Server
    • ClientHello:支持哪些版本、支持哪些加密算法,随机生成一组32字节数据 random_c
  2. Server → Client
    • ServerHello:确定版本、确定加密算法,随机生成一组32字节数据 random_s
    • ServerCertificate:发送证书(含公钥)
  3. Client → Server
    • ClientKeyExchange:用公钥加密预主密钥 pre_master 并发送
  4. Server 解密
    • 服务端收到后,用私钥解密 pre_master
  5. 生成会话密钥
    • 最终密钥 = random_c + random_s + pre_master

三、私有CA部署

注意:所有操作需确保 DNS 解析正确(如 ca.example.comweb.example.com 等)。

1、CA 服务器配置
  1. 配置正向解析对应IP地址

    vim /var/named/yyh.comca      IN      A       192.168.100.10
    
  2. 为主机CA生成私钥

    (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem)
    # umask为权限减去的值
    # openssl genrsa为生成私有密钥
    
  3. 为主机CA生成自签名证

    openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out 	/etc/pki/CA/cacert.pem -days 365
    # 生成自签名根证书CN					# 国家
    HB					# 省份
    WH					# 城市
    LQ					# 公司
    linux				# 单位
    ca.example.com		# 服务器主机名
    root@example.com	# 邮箱
    

    在这里插入图片描述

  4. 为CA提供所需的目录及文件:

    touch /etc/pki/CA/index.txt			# 创建目录
    echo 01 > /etc/pki/CA/serial		# 创建并写入文件
    
2、Web 服务器申请证书
  1. 验证能否解析 ca.example.com

    nslookup ca.example.com				# 对 ca.example.com 进行解析
    

    在这里插入图片描述

  2. 为主机WEB生成私钥

    mkdir /etc/httpd/ssl										# 创建/etc/httpd/ssl目录
    (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key)	# 存放在/etc/httpd/ssl目录
    
  3. 为web.example.com站点生成签署请求文件

    openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
    # 生成证书签名请求CN					# 国家
    HB					# 省份
    WH					# 城市
    LQ					# 公司
    linux				# 单位
    web.example.com		# 服务器主机名
    root@example.com	# 邮箱
    

    在这里插入图片描述

  4. 将签署请求文件发送给CA服务器

    scp -p /etc/httpd/ssl/httpd.csr root@ca.example.com:/etc/pki/CA/
    # 远程复制
    
3、CA 签署证书
  1. 在主机CA上 对签署请求进行数字签名

    openssl ca -in /etc/pki/CA/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
    # 指明所生成的Web证书的存放路径为 /etc/pki/CA/certs/httpd.crt
    

    在这里插入图片描述

  2. 将CA主机上已经数字签名后的Web证书发给Web主机

    scp -p /etc/pki/CA/certs/httpd.crt root@web.example.com:/etc/httpd/ssl/
    # 远程复制
    
4、部署https站点
  1. 在主机WEB上安装apche http扩展模块mod_ssl

    yum -y install mod_ssl		# yum 安装 mod_ssl
    
  2. 修改 SSL 配置

    vim /etc/httpd/conf.d/ssl.conf		# 编辑 ssl 配置文件SSLCertificateFile /etc/httpd/ssl/httpd.crt			# 证书SSLCertificateKeyFile /etc/httpd/ssl/httpd.key		# 私钥
    

    在这里插入图片描述

  3. 配置虚拟主机

    vim httpd-vhosts.conf		# 编辑主配置文件<VirtualHost 192.168.100.20:443>						# IP 地址和端口号DocumentRoot "/var/www/html"						# 告诉配置文件位置在哪里ServerName web.eaxmple.com							# 完整域名SSLEngine on										# 启用 SSL 引擎SSLCertificateFile /etc/httpd/ssl/httpd.crt			# 证书位置SSLCertificateKeyFile /etc/httpd/ssl/httpd.key		# 私玥位置</VirtualHost>systemctl restart httpd
    

    在这里插入图片描述

5、客户端信任私有 CA
  1. 在客户端上去下载CA服务器上的根证书

    scp  root@ca.example.com:/etc/pki/CA/cacert.pem  /root
    # 远程复制
    
  2. 在Web主机创建网页

    echo 123456 > /var/www/html/index.html		# 创建并写入文件
    
  3. 在客户端验证

    curl -k https://web.example.com				# 访问网址
    

    在这里插入图片描述

6、集成动态web
  1. 安装httpd mod_wsgi

    yum -y install mod_wsgi			# yum 安装 mod_wsgi
    
  2. 上传动态web内容:

    在这里插入图片描述

  3. 配置虚拟主机

    mv python.txt test.py								# 把 python.txt 更名为 test.pyvim /etc/httpd/conf.d/httpd-vhosts.conf				# 编辑主配置文件<VirtualHost 192.168.100.20:80>					# IP 地址和端口号DocumentRoot "/var/www/wsgi"				# 告诉配置文件位置在哪里WSGIScriptAlias / "var/www/wsgi/test.py"	# 别名ServerName lq.example.com					# 完整域名</VirtualHost>systemctl restart httpd								# 重启服务
    
  4. 访问验证

    在这里插入图片描述

  5. 修改虚拟主机

    vim /etc/httpd/conf.d/httpd-vhosts.conf				# 编辑主配置文件<VirtualHost 192.168.100.20:80>					# IP 地址和端口号DocumentRoot "/var/www/wsgi"				# 告诉配置文件位置在哪里ServerName lq.example.com					# 完整域名</VirtualHost>systemctl restart httpd								# 重启服务
    
  6. 访问验证

    在这里插入图片描述

关键命令说明

命令选项作用
-x509生成自签名证书(用于创建 CA)
-new生成证书签名请求 (CSR)
-key指定私钥文件路径
-out指定输出文件路径
-days设置证书有效期(默认 365 天)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92845.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92845.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92845.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软考架构】主流数据持久化技术框架

JDO与JPA JDO&#xff08;Java Data Objects&#xff09;和JPA&#xff08;Java Persistence API&#xff09;都是Java中用于对象持久化的规范&#xff0c;但它们在设计目标、技术背景和应用场景上存在显著区别。以下是两者的核心对比&#xff1a;1. 规范背景与维护方 JDO&…

服务日志、监控

服务怎么做监控和告警使用 Prometheus 和 Grafana 来实现整个微服务集群的监控和告警&#xff1a;Prometheus&#xff1a;Prometheus 是一个开源的监控系统&#xff0c;具有灵活的数据模型和强大的查询语言&#xff0c;能够收集和存储时间序列数据。它可以通过 HTTP 协议定期拉…

秋招笔记-8.12

我决定从今天开始&#xff0c;在每天的学习内容中加入算法的内容&#xff0c;大致分布时间的话&#xff0c;假设我一天可以学习八个小时&#xff0c;那算法两个小时&#xff0c;八股三个小时&#xff0c;项目三个小时这样的分布差不多吧。之所以还是需要做做笔试一是为了应对面…

【从0带做】基于Springboot3+Vue3的校园表白墙系统

大家好&#xff0c;我是武哥&#xff0c;最近给大家手撸了一个基于SpringBoot3Vue3的校园表白墙系统&#xff0c;可用于毕业设计、课程设计、练手学习&#xff0c;系统全部原创&#xff0c;如有遇到网上抄袭站长的&#xff0c;欢迎联系博主~ 资料获取方式 请点开作者头像看下…

【Linux系列】服务器 IP 地址查询

博客目录一、hostname 命令&#xff1a;简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令&#xff1a;新一代网络配置全能工具基本用法在服务器管理和网络运维中&#xff0c;快速准确地获取服务器的 IP 地址是一项基本但至关重要的技能。无论是进行远程连接、配…

【完美解决】在 Ubuntu 24.04 上为小米 CyberDog 2 刷机/交叉编译:终极 Docker 环境搭建指南

摘要 本文旨在为广大开发者提供一份在非官方推荐的 Ubuntu 24.04 系统上&#xff0c;成功为小米机器狗 CyberDog 2 进行刷机和交叉编译的终极解决方案。通过层层排查 setup.sh 依赖缺失、No devices to flash 以及交叉编译 Segmentation fault 等疑难杂症&#xff0c;我们发现根…

XX生产线MES系统具体实施方案

一、系统架构设计1. 整体架构图2. 技术组件清单模块技术选型部署要求应用服务Spring Boot 3.2 Spring CloudKubernetes Pod (4C8G)实时通信Kafka 3.6 WebSocket3节点集群工业协议Eclipse Milo (OPC UA)独立服务器 (2C4G)数据库PostgreSQL 15 TimescaleDB 2.10SSD存储, 主从复…

Go语言实战案例:使用模板渲染HTML页面

在 Web 开发中&#xff0c;身份验证是一个绕不开的话题。传统的 Session 机制依赖服务器存储用户状态&#xff0c;而在微服务、分布式架构下&#xff0c;这种方式可能会导致状态同步困难。 JWT&#xff08;JSON Web Token&#xff09;是一种无状态的、跨平台的身份验证解决方案…

@RequestMapping接收文件格式的形参(方法参数)

需求&#xff1a;将文件上传到OSS&#xff0c;忽略域名与路径&#xff0c;将文件名以 “img1.png,img2.png,img3.png”保存到数据库中 1、先看结果 后端要接收postman传递的file文件2、SpringBoot接收参数方式 很显然&#xff0c;上面postman上传的地方可以传入多个文件&#x…

【数据分享】2020-2022年我国乡镇的逐日最高气温数据(Shp/Excel格式)

之前我们分享过2020—2022年中国0.01分辨率逐日最高气温栅格数据&#xff08;可以查看之前的文章获悉详情&#xff09;&#xff01;该数据是研究者张凌, 胡英屹等发布在国家冰川冻土沙漠科学数据中心平台上的高分辨最高气温数据。很多小伙伴拿到数据后反馈栅格数据不太方便使用…

为什么C++主函数 main 要写成 int 返回值 | main(int argc, char* argv[]) 这种写法是什么意思?

主函数 main 要写成 int 返回值&#xff1f;main(int argc, char* argv[]) 为什么里面没有 cin 也能读到数据&#xff0c;数据是怎么传进去的&#xff1f;本文将一步步回答这些问题。1. 为什么 main 要写成 intC 标准&#xff08;ISO/IEC 14882&#xff09;规定&#xff0c;mai…

【oracle闪回查询】记录字段短时间被修改的记录

SELECT versions_starttime, versions_endtime, versions_operation, versions_xid, [字段1], [字段2] – 替换为实际字段名 FROM 表名 VERSIONS BETWEEN TIMESTAMP SYSTIMESTAMP - INTERVAL ‘15’ MINUTE AND SYSTIMESTAMP --15分钟内 WHERE id ‘目标ID’ – 指定记录的唯…

【软考中级网络工程师】知识点之 IP 组播技术:从原理到实战

目录一、IP 组播技术概述1.1 什么是 IP 组播1.2 IP 组播与其他传输方式对比二、IP 组播地址详解2.1 IPv4 组播地址范围及分类2.2 特殊 IPv4 组播地址示例2.3 IPv6 组播地址结构与特点2.4 IP 组播地址与 MAC 地址的映射关系三、IP 组播协议剖析3.1 IGMP 协议深度解析3.2 PIM 协议…

Akamai Bot Manager智能防护体系解析:边缘计算与AI驱动的反爬虫技术

{ “title”: “Akamai Bot Manager智能防护体系解析&#xff1a;边缘计算与AI驱动的反爬虫技术”, “tags”: “Akamai,Bot Manager,边缘计算,反爬虫,CDN安全,机器学习,威胁检测,网络安全”, “description”: “深度剖析Akamai Bot Manager的边缘计算架构、机器学习检测引擎、…

IIS Express中可以同时加载并使用.net4.0和.NET 2.0的 DLL

<add name"HttpHandler" path"UploadHttpHandler.ashx" verb"*" type"ABC.HttpHandler, ABC"/> </handlers> 如果IIS EXPRESS是加载4.0的环境&#xff0c;可以加载.NET 2.0的DLL吗&#xff1f;在 IIS Express 中&#xff…

STM32 ESP8266 WiFi模块驱动

STM32 ESP8266 WiFi模块驱动 1. 简介 ESP8266是一款高度集成的WiFi芯片&#xff0c;可以为其他设备提供WiFi联网功能。本笔记记录了基于STM32 HAL库的ESP8266驱动实现&#xff0c;包括硬件连接、初始化配置、AT指令交互等关键部分。 项目源码仓库&#xff1a;STM32_Sensor_D…

7 种最佳 DBAN 替代方案,彻底擦除硬盘数据

DBAN&#xff08;Darik 的 Boot and Nuke&#xff09;长期以来一直是安全擦除计算机数据的首选解决方案。然而&#xff0c;尽管 DBAN 广受欢迎&#xff0c;但它也存在一些明显的局限性&#xff0c;这些局限性随着时间的推移变得越来越明显。现在&#xff0c;本文将更详细地探讨…

【K8s】K8s控制器——Deamonset、Statefulset、Job与CronJob

1、Deamonset2、Statefulset3、Job与CronJob一次性作业与周期性作业#- 8.6 #cat > daemonset.yml <<EOF apiVersion: apps/v1 kind: DaemonSet metadata:name: test-demonsetlabels:daemonset: test spec:selector:matchLabels:name: testpodtemplate:metadata:labels…

基于柔性管控终端的新能源汽车充电站有序充电系统设计与实现

摘要&#xff1a;随着新能源汽车的迅猛发展&#xff0c;充电基础设施面临着电力负荷激增、电网稳定性下降等挑战。本文针对当前充电设施无序充电导致的电网压力问题&#xff0c;提出了一种基于柔性管控终端的充电站有序充电系统解决方案。通过分析国内外有序充电技术发展现状&a…

10-docker基于dockerfile自动制作镜像

文章目录一.为什么要学习自动构建镜像1.为什么要学习自动化构建镜像2.根据dockerfile自动构建镜像的流程3.常用的dockerfile指令二.使用dockerfile构建nginx服务镜像&#xff08;FR0M&#xff0c;RUN&#xff0c;CMD&#xff09;1.创建dockerfile的存储路径2.编写dockerfile文件…