Linux 服务部署:自签 CA 证书构建 HTTPS 及动态 Web 集成

Linux 服务部署:自签 CA 证书构建 HTTPS 及动态 Web 集成

一、HTTPS基础原理

HTTPS是HTTP协议基于SSL/TLS协议的加密版本,核心差异及握手过程如下:

  1. HTTP与HTTPS对比

    协议传输方式端口核心特点
    HTTP明文传输80无加密,安全性低
    HTTPS数据加密(SSL/TLS)443数据加密、身份验证,安全性高
  2. SSL/TLS握手过程(简化)

    • 客户端(Client)动作

      第一步ClientHello:发送支持的SSL/TLS版本、加密算法,生成随机数random_c(32字节)。

      第三步ClientKeyExchange:用服务器公钥加密预处理密钥pre_master,发送给服务器。

    • 服务器(Server)动作

      第二步ServerHello:确定版本和加密算法,生成随机数random_s(32字节);发送证书(含公钥)。

      第四步用私钥解密pre_master,结合random_c+random_s+pre_master生成会话密钥,用于后续数据加密传输。

在这里插入图片描述

openssl: 命令的选项
-x509 :生成自签名证书格式,专用于创建私有CA
-new :生成新证书的签署请求
-key :生成请求时用到的私钥文件路径
-out :生成后的文件存放路径,如果是自签名操作,将直接生成签署过的证书
-days :证书有效期 默认是365天

二、CA(证书颁发机构)配置

CA是用于颁发和管理数字证书的机构,私有CA配置步骤如下:

1. 前提准备
  • 在DNS服务器的正向解析文件中添加CA域名解析(如ca.example.com对应IP 192.168.100.10):
    vim /var/named/example.com.zone
    # 添加以下内容
    ca      IN      A       192.168.100.10
    # 保存退出后重启DNS服务
    systemctl restart named
    
2. CA核心配置文件(/etc/pki/tls/openssl.cnf[CA_default] 段)

查看缺少那些文件没有

# 配置文件关键内容如下
dir             = /etc/pki/CA           # CA根目录
certs           = $dir/certs            # 已颁发证书存储目录
database        = $dir/index.txt        # 证书跟踪数据库
new_certs_dir   = $dir/newcerts         # 新证书临时目录
certificate     = $dir/cacert.pem       # CA根证书路径
serial          = $dir/serial           # 证书序列号文件
private_key     = $dir/private/cakey.pem # CA私钥路径(需保密)
RANDFILE        = $dir/private/.rand    # 指定随机数生成器的种子文件路径
3. 生成CA私钥和自签名证书
  1. 生成CA私钥(权限严格限制,umask 077确保仅root可读写):

    (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem)
    
  2. 生成CA自签名证书-x509指定自签名格式):

    openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
    
    • openssl req`**:OpenSSL 中用于处理证书请求(CSR)的子命令。
    • -new:生成新的证书请求。
  • -x509:直接生成自签名证书(通常用于根 CA,因为根证书无需其他机构签名)。

    • -key:指定用于签名的私钥路径(这里是 CA 的私钥 cakey.pem)。
    • -out:指定输出的证书文件路径(生成的 CA 根证书 cacert.pem)。
    • -days 365:设置证书有效期为 365 天(1 年)。

    证书信息(DN 字段)填写详情

    证书需要包含标识身份的“可分辨名称(Distinguished Name, DN)”,以下是各字段的输入和含义:

    1. Country Name (2 letter code) [XX]:CN
      • 国家/地区代码(2 个字母),输入 CN 表示“中国”。
    2. State or Province Name (full name) []:HB
      • 省/州名称,输入 HB 通常代表“湖北省”。
    3. Locality Name (eg, city) [Default City]:WH
      • 城市名称,输入 WH 通常代表“武汉市”。
    4. Organization Name (eg, company) [Default Company Ltd]:LQ
      • 组织/公司名称,这里填写自定义名称 LQ
    5. Organizational Unit Name (eg, section) []:linux
      • 部门/单位名称,输入 linux 表示该 CA 属于 Linux 相关部门。
    6. Common Name (eg, your name or your server's hostname) []:ca.example.com
      • 通用名称(核心字段),通常是 CA 服务器的域名,这里设置为 ca.example.com(符合 CA 服务器的命名规范)。
    7. Email Address []:root@example.com
      • 联系邮箱,填写 root@example.com 作为证书管理员的联系方式。
  1. 创建CA必要文件
    touch /etc/pki/CA/index.txt  # 证书数据库
    echo 01 > /etc/pki/CA/serial  # 初始序列号(从01开始)
    

三、Web服务器证书申请与签名

Web服务器(如Apache)需向CA申请证书,步骤如下:

1. Web服务器生成私钥和CSR(证书签名请求)
  1. 创建存放证书的目录

    mkdir /etc/httpd/ssl  # Apache证书目录
    
  2. 生成Web服务器私钥

    (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key)
    
  3. 生成CSR文件(需与CA信息匹配,主机名填web.example.com):

    openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
    
    • DN字段示例:国家(CN)、省份(HB)、城市(WH)、组织(LQ)、部门(linux)、主机名(hrz2.example.com)、邮箱(root@example.com)。
2. CA签名Web证书
  1. Web服务器发送CSR给CA

    scp /etc/httpd/ssl/httpd.csr root@ca.example.com:/etc/pki/CA/  # 传输CSR
    
  2. 在主机CA上 对签署请求进行数字签名,并指明所生成的Web证书的存放路径

    openssl ca -in /etc/pki/CA/httpd.csr -out /etc/pki/CA/httpd.crt -days 365
    
3. Web服务器获取签名证书
scp root@ca.example.com:/etc/pki/CA/httpd.crt /etc/httpd/ssl/  # 下载签名后的证书

四、Apache部署HTTPS站点

通过mod_ssl模块配置Apache支持HTTPS:

1. 安装mod_ssl
yum -y install mod_ssl  # 安装SSL模块
2. 配置SSL证书路径

修改/etc/httpd/conf.d/ssl.conf,指定证书和私钥路径:

# 编辑配置文件
vim /etc/httpd/conf.d/ssl.conf
# 修改以下两行
SSLCertificateFile /etc/httpd/ssl/httpd.crt  # Web服务器证书
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key  # Web服务器私钥
3. 配置HTTPS虚拟主机

创建/etc/httpd/conf.d/httpd-vhosts.conf,添加虚拟主机配置:

# 编辑虚拟主机配置文件
vim /etc/httpd/conf.d/httpd-vhosts.conf
# 添加以下内容
<VirtualHost 192.168.100.20:443>DocumentRoot "/var/www/html/test"  # 网站根目录ServerName hrz2.example.com  # 绑定域名SSLEngine on  # 启用SSLSSLCertificateFile /etc/httpd/ssl/httpd.crt  # 证书路径SSLCertificateKeyFile /etc/httpd/ssl/httpd.key  # 私钥路径
</VirtualHost>
# 保存退出后重启Apache
systemctl restart httpd
4. 客户端信任CA根证书
  1. 下载CA根证书到客户端

    scp root@192.168.100.10:/etc/pki/CA/cacert.pem .  # 从CA服务器下载
    
  2. 导入浏览器(以火狐为例):
    设置 → 首选项 → 高级 → 证书 → 查看证书 → 导入 → 选择cacert.pem → 勾选“信任使用此CA标识的网站” → 确认。

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

  3. 访问验证
    浏览器访问 https://hrz2.example.com,显示安全连接。

在这里插入图片描述

五、集成Python动态Web内容

通过mod_wsgi模块部署Python动态内容:

1. 安装依赖
yum -y install httpd mod_wsgi  # 安装Apache和WSGI模块
2. 部署动态内容
  1. 创建存放Python脚本的目录

    mkdir /var/www/wsgi  # 存放Python脚本
    # 将Python动态脚本(如webapp.py)上传至该目录
    
  2. 配置虚拟主机
    修改/etc/httpd/conf.d/httpd-vhosts.conf,添加HTTP虚拟主机(80端口):

    vim /etc/httpd/conf.d/httpd-vhosts.conf
    # 添加以下内容
    <VirtualHost 192.168.100.20:80>DocumentRoot "/var/www/wsgi"WSGIScriptAlias  /  "/var/www/wsgi/webapp.py"  # 绑定Python脚本ServerName py.example.com  # 动态站点域名
    </VirtualHost>
    
3. DNS解析配置

在DNS服务器添加py.example.com解析:

vim /var/named/example.com.zone
# 添加以下内容
py      IN      A       192.168.100.20  # 解析到Web服务器IP
# 保存退出后重启DNS
systemctl restart named
4. 验证

浏览器访问 http://py.example.com,查看动态内容是否正常加载。

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

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

相关文章

Python3.10 + Firecrawl 下载公众号文章

获取Firecrawl apikey 打开官网&#xff0c;使用github账号登录 https://www.firecrawl.dev/ 进入个人中心 https://www.firecrawl.dev/app/api-keys 使用PyCharm创建python项目 创建.env # API配置 FIRECRAWL_API_KEYfc-9*********0816d5ac6b20 # 输出配置 OUTPUT_DIRout…

IoT/透过oc_lwm2m/boudica150 源码中的AT指令序列,分析NB-IoT接入华为云物联网平台IoTDA的工作机制

文章目录概述指令调用顺序具体接入指令分析ATE0 关闭回显ATQREGSWT 设置&#xff08;平台&#xff09;注册模式ATQLWSREGIND0 手动注册平台set_autoconnect / ATNCONFIGATNBANDx,xset_plmn / ATCOPS_set_apn / ATCGDCONT(安全)接入参数 CDPDTLSPSKATNNMI 设置新消息指示_check_…

Android UI(一)登录注册 - Compose

UI - 登录注册 - Compose一、声明式UI1. **颠覆传统开发模式**2. **技术优势**3. **开发效率提升**4. **未来生态方向**5. **实际影响**二、创建项目1. Compose UI结构2. Scaffold3. 可组合函数三、创建组件页面1. LoginPage2. RegisterPage3. MainPage四、导航1. 添加依赖2. 使…

分享10个ai生成ppt网站(附ai生成ppt入口)

实测对比&#xff1a;15页PPT从3小时压缩到3分钟的秘密武器 当ChatGPT能写方案、Midjourney能画图&#xff0c;做PPT还在手动排版就OUT了&#xff01;这些AI生成PPT网站已实现「输入文案秒出设计稿」&#xff0c;无论职场汇报、毕业答辩还是路演融资&#xff0c;零设计基础也能…

最强开源视频模型通义万相wan2.1在comfyui中的安装应用详解

摘要&#xff1a;阿里巴巴开源通义万相Wan2.1模型&#xff0c;支持文生视频、图生视频等多种功能&#xff0c;并整合关键环节简化创作流程。官方和Kiji版本需配套使用各自工作流。低显存显卡可使用GGUF模型解决方案&#xff0c;最低适配4G显存。ComfyUI已原生支持该模型&#x…

机器学习:基于OpenCV和Python的智能图像处理 实战

机器学习&#xff1a;基于OpenCV和Python的智能图像处理实战——待填坑图像处理基础图像的基本表示方法图像处理的基本操作图像运算图像的色彩空间转换图像几何变换4.1 仿射变换4.2 重映射4.3 投影变换 4.4 极坐标变换5 图像直方图处理7 图像阈值处理8 图像形态学处理github地址…

proteus实现简易DS18B20温度计(stm32)

一、新建proteus工程 具体看前面文章 二、搭建电路 需要配置供电网络以及寻找元器件&#xff0c;细节看前面文章&#xff0c;下面给出电路图 电路包含了五个部分&#xff1a; 1、DS18B20&#xff1a;数据引脚记得上拉 2、stm32电路 3、串口电路&#xff08;右下角那个器件…

Autoppt-AI驱动的演示文稿生成工具

本文转载自&#xff1a;Autoppt-AI驱动的演示文稿生成工具 - Hello123工具导航 ** 一、 Autoppt&#xff1a;AI 驱动的智能演示文稿生成工具 Autoppt 是一款基于人工智能的在线演示文稿生成平台&#xff0c;通过输入主题或上传文档&#xff08;Word/PDF/ 图片等&#xff09;&…

Flink on YARN启动全流程深度解析

Flink on YARN 模式启动流程及核心组件协作详解整个过程分为三个主要阶段&#xff1a;​​JobManager 启动​​&#xff08;作业提交与 AM 初始化&#xff09;​​TaskManager 资源分配与启动​​​​任务部署与执行​​第一阶段&#xff1a;作业提交与 JobManager (AM) 启动​…

安卓开发者自学鸿蒙开发1基础入门

1.基础 声明式UI&#xff1a;​​ ​​核心&#xff1a;​​ 你​​声明​​你想要UI是什么样子&#xff08;在build()方法里描述&#xff09;&#xff0c;而不是一步步命令式地创建和操作View对象&#xff08;findViewById, setText, setOnClickListener&#xff09;。 模块化…

弹性扩展新范式:分布式LLM计算的FastMCP解决方案

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。如果你想系统学习AI大模型应用开发&#xff0c;挑战AI高薪岗位&#xff0c;可在文章底部联系。在现代大语言模型&#xff08;LLM&#xff09;应用架构中…

springboot项目不同平台项目通过http接口AES加密传输

前言&#xff1a; 在公司协作开发的过程中&#xff0c;自己的项目是公共调用平台&#xff0c;也可以说是中转平台&#xff0c;供公司其他团队的项目进行接口调用。因为是不同团队项目之间的相互调用&#xff0c;所以不能通过openFeign远程调用。只能通过http远程调用&#xff…

推荐5个网页模板资源网

1. 企业模板官方网站&#xff1a; http://www.qimoban.com介绍&#xff1a;企业模板(qimoban.com )是一个专注于提供丰富多样的企业模板的优质平台&#xff0c;致力于为企业和个人打造高效、专业、个性化的模板获取渠道。该平台提供海量的企业模板资源&#xff0c;涵盖企业官网…

Redis持久化机制(RDB AOF)

1. RDB RDB 持久化是把当前进程数据生成快照保存到硬盘的过程&#xff0c;触发 RDB 持久化过程分为手动触发和 自动触发&#xff0c;存储的是二进制数据。 1.1 手动触发 使用 save 和 bgsave 命令触发&#xff1a; save&#xff1a;Redis服务主进程阻塞式执行持久化操作&…

【css】让浏览器支持小于12px的文字

【css】让浏览器支持小于12px的文字.demo {display: inline-block;/** 使用Webkit引擎的变换属性&#xff08;主要针对旧版Safari/Chrome&#xff09; **/-webkit-transform: scale(0.8); }注意&#xff1a;display: inline-block; 一定要加上&#xff01;1.transform: scale(…

机器学习-基础入门:从概念到核心方法论

在人工智能飞速发展的今天&#xff0c;机器学习作为其核心技术&#xff0c;正深刻改变着我们的生活与工作。从 AlphaGo 战胜围棋世界冠军&#xff0c;到日常的智能推荐、人脸识别&#xff0c;机器学习的应用无处不在。本文将从基础概念出发&#xff0c;带你系统了解机器学习的核…

《Leetcode》-面试题-hot100-动态规划

题目列表 70. 爬楼梯 简单难度 leetcode链接 118. 杨辉三角 简单难度 leetcode链接 198. 打家劫舍 中等难度 leetcode链接 279.完全平方数 中等难度 leetcode链接 322.零钱兑换 中等难度 leetcode链接 139.单词拆分 中等难度 leetcode链接 300.最长递增子序列 中等难度 l…

数巅中标中建科技AI知识库项目,开启建筑业数智化新篇章

AI正以前所未有的迅猛态势渗透进建筑业的每一处脉络。在这场数智化转型浪潮中&#xff0c;AI技术如何与建筑业基因深度融合&#xff1f;如何充分释放数据价值&#xff1f;近日&#xff0c;数巅成功中标中建科技集团有限公司“企业AI知识库研发”项目&#xff0c;这一“大语言模…

想要PDF翻译保留格式?用对工具是关键

嘿&#xff0c;朋友&#xff01;最近有没有被PDF翻译的事儿搞得焦头烂额呀&#xff1f;尤其是碰到韩文PDF文件的时候&#xff0c;是不是更头疼了&#xff1f;别担心&#xff0c;我最近也遇到了类似的问题&#xff0c;试了不少软件&#xff0c;发现有五款软件在处理韩文PDF翻译时…

【MySQL✨】服务器安装 MySQL 及配置相关操作

1. 安装 MySQL 在安装 MySQL 时&#xff0c;如果使用官方 RPM 源&#xff0c;会遇到 GPG 密钥验证失败的错误&#xff0c;可以按照以下步骤解决&#xff1a; 解决 GPG 密钥验证失败的问题下载 MySQL 官方 GPG 密钥 使用以下命令下载并安装 MySQL 的官方 GPG 密钥&#xff1a; w…