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

HTTPS加密与私有CA配置全攻略

HTTPS 基础概念
HTTPS = HTTP + SSL/TLS
- HTTP:  明文传输,端口 80
- HTTPS: 数据加密传输,端口 443

TLS 握手流程
步骤客户端 (Client)服务端 (Server)
1Client Hello: 支持的 TLS 版本、加密算法列表、随机数 random_c (32字节)
2Server Hello: 确认 TLS 版本、加密算法、随机数 random_s (32字节) Server Certificate: 发送证书(含公钥)
3Client Key Exchange: 发送 pre_master(用公钥加密)
4用私钥解密 pre_master,生成会话密钥: Session Key = random_c + random_s + pre_master

关键点:会话密钥通过三方随机数生成,确保前向安全性。


CA 目录结构
#查看记录openssl信息
vim /etc/pki/tls/openssl.cnf
# 默认 CA 根目录
#键值对 key = value
dir = /etc/pki/CA
#调用值用$符号
# 子目录与文件	
$dir/certs          # 证书存放目录 → /etc/pki/CA/certs
database = $dir/index.txt  # 证书数据库 → /etc/pki/CA/index.txt

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

私有 CA 配置流程
1. DNS 准备(CA 服务器)
# 添加解析记录
vim /var/named/ydh.com
ca  IN  A  192.168.100.10
#重启服务
systemctl restart named
2. 生成 CA 密钥与自签名证书
# 生成 CA 私钥(权限 600)
(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem)# 生成自签名证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365

填写信息
Country(国家)=CN, State(省份)=HB, City(城市)=WH, Org(公司)=LQ, OU(组织单元)=linux,
CN(主机名字)=ca.example.com, Email(邮箱)=root@example.com

3. 初始化 CA 环境
touch /etc/pki/CA/index.txt     # 证书数据库
echo 01 > /etc/pki/CA/serial    # 初始序列号,不能为空

Web 服务器证书申请
1. 在Web服务器生成 Web 私钥与 CSR
#查看DNS是否关联
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=192.168.100.10	#更改DNS,使其关联CA服务器#重启网卡服务
systemctl restart network#私钥放入/etc/httpd/ssl文件中
mkdir /etc/httpd/ssl
(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key)# 生成证书签署请求 (CSR)
openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365

填写信息:CN(主机名)=web.example.com(其他与 CA 一致)

2. Web服务器发送 CSR 到 CA 服务器
scp /etc/httpd/ssl/httpd.csr root@ca.example.com:/etc/pki/CA/
3. CA服务器签署证书
openssl ca -in /etc/pki/CA/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
4. Web服务器下载签名后的证书
scp root@ca.example.com:/etc/pki/CA/certs/httpd.crt /etc/httpd/ssl/

Apache HTTPS 配置
1. Web服务器安装模块与配置 SSL
yum -y install mod_ssl
vim /etc/httpd/conf.d/ssl.conf
#更改证书的路径,私钥路径
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
2.Web服务器配置 HTTPS 虚拟主机
vim /etc/httpd/conf.d/httpd-vhosts.conf
#添加
<VirtualHost 192.168.100.20:443>DocumentRoot "/var/www/html"ServerName web.example.comSSLEngine onSSLCertificateFile /etc/httpd/ssl/httpd.crtSSLCertificateKeyFile /etc/httpd/ssl/httpd.key
</VirtualHost>
3. 重启服务与防火墙
#关闭防火墙
systemctl stop firewall
systemctl disable firewall
#或
systemctl restart httpd
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

客户端信任 CA 根证书
  1. 客户端下载 CA 根证书:

    #更改DNS为192.168.100.10
    vim /etc/sysconfig/network-scripts/ifcfg-ens33scp root@ca.example.com:/etc/pki/CA/cacert.pem .
    
  2. 浏览器导入:

    • Firefox:设置 → 隐私与安全 → 证书 → 查看证书 → 导入
    • 勾选两个 信任此 CA 标识的网站
  3. 访问测试:
    https://web.example.com

    在这里插入图片描述


动态 Web 内容集成(Python WSGI)
1. 安装依赖
yum -y install httpd mod_wsgi
mkdir /var/www/wsgi
# 上传 Python 应用至 /var/www/wsgi
2. 配置虚拟主机
# 注释主配置中的 DocumentRoot
# vim /etc/httpd/conf/httpd.conf
# DocumentRoot "/var/www/html"#将python.text改名为webapp.py,并赋予权限
mv python.txt webapp.py
chmod +x test.py # 配置 WSGI 虚拟主机
vim /etc/httpd/conf.d/httpd-vhosts.conf
#访问python.txt
<VirtualHost 192.168.100.20:80>DocumentRoot "/var/www/wsgi"WSGIScriptAlias / /var/www/wsgi/webapp.pyServerName py.example.com
</VirtualHost>

在这里插入图片描述

#访问html网页
<VirtualHost 192.168.100.20:80>DocumentRoot "/var/www/wsgi"ServerName py.example.com
</VirtualHost>

在这里插入图片描述

3. DNS 解析与防火墙**
# DNS 服务器添加记录
vim /var/named/example.com.zone
py  IN  A  192.168.100.20
systemctl restart named# 防火墙放行 HTTP
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
4. 验证访问
systemctl restart httpd

访问:http://py.example.com


关键修正说明

  1. TLS 握手流程
    • 补充 Change Cipher SpecFinished 消息(实际通信需确认密钥切换)。
    • 明确会话密钥生成公式为伪代码(实际使用 PRF 函数)。
  2. 路径标准化
    • 统一使用 /etc/pki/CA 作为 CA 根目录。
    • 明确 index.txtserial 为 CA 数据库文件。
  3. 命令纠错
    • 修正 openssl ca 命令的输入文件路径 (/etc/pki/CA/httpd.csr)。
    • 添加 mod_ssl 安装步骤(原笔记遗漏)。
  4. 防火墙优化
    • 使用 --add-service=https 代替端口放行,提高可读性。
  5. 动态 Web 部分
    • 明确需注释主配置中的 DocumentRoot 避免冲突。
      作为 CA 根目录。
    • 明确 index.txtserial 为 CA 数据库文件。
  6. 命令纠错
    • 修正 openssl ca 命令的输入文件路径 (/etc/pki/CA/httpd.csr)。
    • 添加 mod_ssl 安装步骤(原笔记遗漏)。
  7. 防火墙优化
    • 使用 --add-service=https 代替端口放行,提高可读性。
  8. 动态 Web 部分
    • 明确需注释主配置中的 DocumentRoot 避免冲突。
    • 补充 WSGIScriptAlias 指向应用入口文件(如 webapp.py)。
http://www.dtcms.com/a/327956.html

相关文章:

  • AI智能体平台大爆发,2025AI智能体平台TOP30
  • 【Unity3D实例-功能-下蹲】角色下蹲(二)穿越隧道
  • Python爬虫获取淘宝店铺所有商品信息API接口
  • IoTDB与传统数据库的核心区别
  • 【Linux系列】服务器 IP 地址查询
  • OpenBMC中C++单例模式架构与实现全解析
  • 站在Vue的角度,对比鸿蒙开发中的递归渲染
  • 线缆桥架、管道设计规范详解
  • 异步并发×编译性能:Dart爬虫的实战突围
  • USB 2.0 3.0 插拔 ftrace 详解
  • MySQL相关概念和易错知识点(5)(索引、事务、MVCC)
  • LintCode第1526-N叉树的前序遍历
  • MongoDB 入门指南(一):从 0 到 1 学会文档数据库
  • QT之问题解决记录1:上下位机通信中断而不自知
  • react+redux+toolkit来实现公共数据的处理-对比vuex
  • 深度学习日志及可视化过程
  • 【机器学习深度学习】归一化层
  • Java 编程每日一题:实现一个简易的 LRU 缓存
  • JavaSE:数据类型与变量
  • 13-docker的轻量级私有仓库之docker-registry
  • 网络安全第1—2天笔记
  • 【19】万集科技——万集科技嵌入式,校招 一面,二面,面试问答记录
  • 数据分析与可视化
  • Unity数据可视化图表插件XCharts
  • CS2服务器是何方神圣
  • 21.Linux HTTPS服务
  • imx6ull-驱动开发篇20——linux互斥体实验
  • mimiconda+vscode
  • Ceph的FileStore存储引擎详解
  • Ceph放置组(PG)详解