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

Linux小课堂: HTTPS协议原理与Apache服务器配置实战

HTTPS协议基础与加密机制

HTTPS(Hypertext Transfer Protocol Secure) 是HTTP协议的安全扩展,通过2个加密协议实现数据加密传输与身份认证,简而言之,HTTPS = HTTP + SSL/TLS,通过加密传输与身份认证保障安全

  • 加密协议:
    • SSL(Secure Sockets Layer):安全套接字层(旧版)
    • TLS(Transport Layer Security):传输层安全协议(SSL的升级版)

其核心机制如下:

1 )加密原理:

  • HTTP协议以明文传输数据,易被中间人攻击窃取敏感信息(如密码、银行卡号)
  • HTTPS采用非对称加密(如RSA算法)建立安全通道:
    • 服务器生成公钥(公开)与私钥(私有)
    • 客户端用公钥加密数据,服务器用私钥解密,确保传输内容不可被破解
  • 默认端口为443(HTTP为80)

2 ) SSL/TLS协议作用:

  • TLS(Transport Layer Security) 是SSL(Secure Sockets Layer)的升级版,提供更安全的加密通信。
  • 流程:
    • 客户端(浏览器)与服务器(如Apache)协商加密算法。
    • 交换密钥并验证身份,建立加密连接。
    • 后续通信数据均通过密钥加密传输。

3 ) CA(Certificate Authority)机构的作用:

  • 解决中间人攻击:第三方权威机构验证服务器身份,确保公钥合法性
  • 数字证书内容:包含服务器公钥、所有者信息、CA签名等
  • 浏览器验证流程:访问时自动向CA验证证书合法性,非法证书触发警告

数字证书与CA认证机制


1 ) 证书核心作用

  • 解决公钥信任问题:防止攻击者伪造公钥
  • 包含信息:服务器域名、公钥、有效期、签发机构

2 ) CA(Certificate Authority)

  • 权威第三方机构(如DigiCert、Let’s Encrypt)
  • 工作流程:
    服务器生成密钥对
    向CA提交证书签名请求CSR
    CA
    验证域名所有权
    签发数字证书
    浏览器验证证书合法性

3 ) 证书类型对比

类型适用场景费用浏览器信任度
自签名证书测试/内部项目免费警告提示
CA签发证书商业网站/对外服务付费完全信任

配置Apache支持HTTPS

步骤1:开放防火墙端口

永久开放443端口(TCP协议)
firewall-cmd --zone=public --add-port=443/tcp --permanent 
重载防火墙配置 
firewall-cmd --reload 
验证已开放端口
firewall-cmd --list-ports  # 输出应包含 "443/tcp"

步骤2:安装SSL/TLS模块

安装Apache的SSL模块 
yum install -y mod_ssl 
重启Apache服务 
systemctl restart httpd 

步骤3:系统默认证书测试

  • CentOS自动生成自签名证书:
    • 私钥路径:/etc/pki/tls/private/localhost.key
    • 证书路径:/etc/pki/tls/certs/localhost.crt
  • 访问 https://服务器IP 测试:
    • 浏览器提示“不安全”因证书未经CA认证,可手动忽略警告继续访问
    • 查看证书信息:有效期通常为1年,颁发者为 localhost.localdomain

生成自签名证书并配置Apache

步骤1:生成私钥与证书请求文件(CSR)

进入Apache配置目录
cd /etc/httpd 
创建证书存储目录 
mkdir pki && cd pki生成2048位RSA私钥 
openssl genrsa -out server.key 2048生成证书签名请求(CSR)
openssl req -new -key server.key -out server.csr 

填写CSR信息示例:

Country Name (2-letter code) [XX]: CN  
State or Province Name (full name) []: Zhejiang  
Locality Name (city) []: Hangzhou  
Organization Name (company) []: Webx  
Organizational Unit Name (department) []: Linux  
Common Name (server FQDN or IP) []: 192.168.0.106  # 需与服务器IP/域名一致  
Email Address []: wang@example.com  

步骤2:生成自签名证书(CRT)

基于CSR生成有效期为10年的证书
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt 

步骤3:替换系统默认证书

复制私钥与证书到系统目录 
cp server.key /etc/pki/tls/private/
cp server.crt /etc/pki/tls/certs/

步骤4:修改Apache SSL配置
编辑文件 /etc/httpd/conf.d/ssl.conf

注释默认证书路径,替换为自签名证书 
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt 
SSLCertificateFile /etc/pki/tls/certs/server.crt注释默认私钥路径,替换为自生成私钥 
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/pki/tls/private/server.key 

重启Apache服务:

systemctl restart httpd

步骤5:验证HTTPS访问

  1. 访问HTTPS站点
    https://192.168.0.106 → 浏览器显示不安全警告(因自签名证书)

  2. 处理安全警告

    • 因自签名证书未被公共CA认证,浏览器显示 "不安全"警告
    • 手动操作:点击 “高级” → “继续前往” 强制访问
  3. 查看证书信息

    • 点击地址栏「不安全」→「证书」→「详细信息」:
      • 颁发对象:192.168.0.106
      • 签发者:Webx/Linux
      • 公钥算法:RSA (2048 bits)
      • 有效期:10年(自设定)

Nestjs 工程示例

import { NestFactory } from '@nestjs/core';
import { readFileSync } from 'fs';
import { AppModule } from './app.module';async function bootstrap() {const httpsOptions = {key: readFileSync('/etc/pki/tls/private/server.key'),  // 私钥路径 cert: readFileSync('/etc/pki/tls/certs/server.crt'),   // 证书路径 };const app = await NestFactory.create(AppModule, { httpsOptions,  // 启用HTTPS });await app.listen(443);  // 监听443端口 
}
bootstrap();

关键术语说明

  • PKI(Public Key Infrastructure):公钥基础设施,包含数字证书、CA、加密算法等组件的安全体系
  • 非对称加密:RSA等算法,公钥加密数据、私钥解密,防止传输窃听
  • CSR(Certificate Signing Request):包含服务器信息的未签名证书请求文件
  • X.509证书:标准证书格式,存储公钥、身份信息及CA签名

注意事项:生产环境必须使用CA认证证书,自签名证书仅限测试用途

生产环境证书建议


1 ) 自签名证书局限性:

  • 仅适用于测试或个人项目,浏览器始终提示“不安全”。
  • 无法通过CA验证,存在中间人攻击风险。

2 ) 正式证书获取途径:

  • 免费证书:
    • Let’s Encrypt、ZeroSSL 等机构提供自动签发的DV证书。
  • 付费证书:
    • DigiCert、GlobalSign 等CA机构提供OV/EV证书,适用于企业级应用。
  • 申请流程:
    • 向CA提交CSR文件 → 完成域名所有权验证 → 获取签名后的证书(CRT) → 配置到Apache。

3 ) 可信证书申请

  • 使用Let’s Encrypt获取免费CA证书:
    # 通过Certbot工具自动化申请 
    yum install certbot python3-certbot-apache 
    certbot --apache -d yourdomain.com 
    

4 ) 强制HTTPS跳转

在Apache配置中添加重定向规则:

<VirtualHost *:80>ServerName 192.168.0.106 Redirect permanent / https://192.168.0.106/
</VirtualHost>

5 ) 增强安全性

  • 启用HSTS(HTTP Strict Transport Security)
  • 定期轮换密钥(建议每年一次)

总结

证书类型与应用场景对比

类型获取方式适用场景成本浏览器信任
自签名证书OpenSSL自行生成测试/个人项目免费警告提示
CA认证证书向DigiCert/Let’s Encrypt等机构购买商业网站付费自动信任

关键概念说明

术语说明
PKI公钥基础设施(Public Key Infrastructure),含CA、RA、证书库等组件
非对称加密RSA/ECC算法,加密与解密使用不同密钥
CSR证书签名请求(Certificate Signing Request),含公钥和服务器信息
TLS握手协议包含协商加密套件、交换密钥、验证证书等步骤(RFC 5246定义)

注:自签名证书适用于测试环境,商业场景需使用CA签发证书以避免浏览器警告

关键总结:

  • HTTPS的核心是通过SSL/TLS加密与CA认证解决HTTP明文传输的安全隐患
  • 自签名证书可快速实现测试环境加密,但生产环境需依赖权威CA证书建立可信连接
http://www.dtcms.com/a/536420.html

相关文章:

  • 51c大模型~合集37
  • 03-Machine-4-fft.py K230进行快速傅里叶变换、频率计算及幅值计算功能演示
  • 医院系统接口对接实战:从 WSDL 到 HTTP 的全流程解析
  • 【C++学习】对象特性--构造函数
  • 装修公司前十强郑州做网站优化
  • 绿色网站欣赏站点查询
  • 插件:@vitejs/plugin-basic-ssl
  • Docker使用详解:在ARM64嵌入式环境部署Python应用
  • 【微知】MAC笔记本如何重启tourchbar?(sudo pkill TouchBarServer)
  • Smartproxy API 代理 IP 提取指南——JSON-first 架构与参数化最佳实践
  • 统计过程能力指数在齿轮制造中的应用学习分享
  • 河北地矿建设集团官方网站昆山市网站建设
  • __金仓数据库平替MongoDB实战:制造业生产进度管理的国产化升级之路__
  • 电商设计就是网站设计吗乐清本地生活服务平台
  • html css js网页制作成品——似锦HTML+CSS网页设计(5页)附源码
  • 某教育大厂面试题解析:MySQL索引、Redis缓存、Dubbo负载均衡等
  • wordpress怎么加菜单阿里网站怎样做seo
  • 2025年损坏Excel文件修复工具推荐:一键恢复表格内容
  • 网站一直百度上搜不到是怎么回事素马杭州网站设计介绍
  • 基于 STM32 的智能水表流量计设计与实现 —— 数据采集与远程传输
  • 深度学习核心概念拆解:张量、模型、训练、推理
  • C++初阶 -- 模拟实现list
  • 开源Outline系统基础知识要点及避坑要点
  • 淘宝客云建站官网模板网pi
  • 中国糕点网页设计网站查工程建设不良记录免费的网站
  • redis-cluster集群配置部署
  • 整体设计 全面梳理复盘 之9 “相提并论的三者” :否则段三种主义 “保持 - 反对 - 保留” 表格化构建与原始逻辑对标
  • 第5章-虚拟机栈
  • 配置(1):samba的配置
  • web开发,在线%鲜花销售%管理系统,基于asp.net,webform,c#,sql server存储过程