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

Http升级为Https - 开发/测试服环境

1.应用场景

主要用于开发/测试服环境将http升级为https, 防止前端web(浏览器)出现Mixed Content报错;

2.学习/操作

1.文档阅读

deepseek 问答;

2.整理输出

 报错信息:

Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint '<URL>'. This request has been blocked; the content must be served over HTTPS.

翻译:

混合内容:位于“<URL>”的页面是通过HTTPS加载的,但请求了不安全的XMLHttpRequest端点“<URL]”。此请求已被阻止;内容必须通过HTTPS提供。

生成自签名证书并在 CentOS 测试环境中配置 HTTPS 的步骤如下。

我们将使用 OpenSSL 创建自签名证书,并配置 Nginx 和 Apache 这两种常用的 Web 服务器。下面是具体步骤:

一、安装 OpenSSL

首先,请确保你的系统上安装了 OpenSSL,通常 CentOS 默认会安装它,如果没有,请使用以下命令来安装:

sudo yum install openssl -y

二、生成自签名证书

     创建目录

  1. 检查并创建 /etc/ssl/private 目录

    使用以下命令来确认目录是否存在并进行创建:sudo mkdir -p /etc/ssl/private

    -p 选项确保在没有上级目录时同时创建它们。

  2. 为 /etc/ssl/private 目录设置合适的权限

    在 Unix/Linux 系统上,通常会限制私钥的访问权限。可以设置以下权限:sudo chmod 700 /etc/ssl/private

  1. 生成私钥

    openssl genrsa -out /etc/ssl/private/selfsigned.key 2048
    

    这将生成一个 2048 位的私钥,文件保存为 /etc/ssl/private/selfsigned.key

  2. 生成自签名证书

    openssl req -new -x509 -key /etc/ssl/private/selfsigned.key -out /etc/ssl/certs/selfsigned.crt -days 365
    

    在执行此命令时,你将被要求输入一些信息,如下所示(可根据需求填写):

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:Beijing
Organization Name (比如公司名) [Internet Widgits Pty Ltd]:Your Company Name
Organizational Unit Name (eg, section) []:Your Organization Unit
Common Name (e.g. server FQDN or YOUR name) []:your_domain.com  # 这里填写你的域名或IP地址
Email Address []:your_email@example.com

  1. 这将生成有效期为 365 天的自签名证书,文件保存为 /etc/ssl/certs/selfsigned.crt

三、配置 Nginx 或 Apache

配置 Nginx

1. 编辑 Nginx 配置文件,通常为 /etc/nginx/nginx.conf 或某个特定站点的配置文件。

sudo vi /etc/nginx/nginx.conf

2. 在 server 块中添加 HTTPS 配置,例如

server {
    listen 443 ssl;
    server_name your_domain.com;  # 替换为你的域名

    ssl_certificate     /etc/ssl/certs/selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/selfsigned.key;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

3. 测试 Nginx 配置并重启 Nginx:

sudo nginx -t  # 测试配置
sudo systemctl restart nginx  # 重启 Nginx

配置 Apache
  1. 编辑 Apache 配置文件,通常为 /etc/httpd/conf.d/ssl.conf 或你的虚拟主机配置文件。

    sudo vi /etc/httpd/conf.d/ssl.conf
    
  2. 添加或修改 VirtualHost 块启用 HTTPS:

    <VirtualHost *:443>ServerName your_domain.com  # 替换为你的域名SSLEngine onSSLCertificateFile /etc/ssl/certs/selfsigned.crtSSLCertificateKeyFile /etc/ssl/private/selfsigned.keyDocumentRoot "/var/www/html"<Directory "/var/www/html">AllowOverride AllRequire all granted</Directory>
    </VirtualHost>
    
  3. 测试 Apache 配置并重启 Apache:

    sudo apachectl configtest  # 测试配置
    sudo systemctl restart httpd  # 重启 Apache
    

四、打开防火墙端口

确保防火墙允许 HTTPS 流量(通常是端口 443):

sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

完成

现在,你的测试服务器应该已经成功配置自签名证书并支持 HTTPS!你可以通过访问 https://your_domain.com 来测试。

注意事项

  • 浏览器警告:由于这是自签名证书,浏览器可能会显示安全警告,你可以选择忽略此警告以继续访问。
  • 替换为公用证书一般情况下,建议在生产环境中使用由受信任的证书颁发机构(CA)颁发的证书以确保安全性。 (可以申请一些机构的免费CA证书, 这里是测试服环境, 就直接使用自签名证书了)

如果你在操作过程中遇到任何问题,欢迎随时问我!


 


 Windows环境下, 升级http到https

生成和使用自签名证书通常分为两个部分:生成证书 和 使用证书。下面将详细介绍这两个步骤。

一、生成自签名证书

1. 使用 OpenSSL 生成自签名证书

如果你选择使用 OpenSSL,也可以按照以下步骤:

步骤 1:确保安装 OpenSSL

下载并安装 OpenSSL。

步骤 2:打开命令提示符

  1. 在 Windows 搜索框中输入 cmd 打开命令提示符。

步骤 3:生成私钥

运行以下命令生成私钥:

openssl genrsa -out private.key 2048

如果提示openssl 命令不存在, 将其安装路径加入到系统环境变量中, 重新打开cmd窗口, 重新执行即可

步骤 4:生成证书请求(CSR)

运行以下命令生成证书请求:

openssl req -new -key private.key -out request.csr

步骤 5:生成自签名证书

执行以下命令生成自签名证书:

openssl x509 -req -days 365 -in request.csr -signkey private.key -out certificate.crt

二、使用自签名证书

生成自签名证书后,可以根据需要将其应用于不同场景,比如:Web 服务器(例如 Nginx 或 Apache),应用程序,或者 VPN。

1. 配置 Web 服务器使用自签名证书

以下是如何在 Nginx 和 Apache 中使用自签名证书的示例。

Nginx 中使用自签名证书

  1. 将生成的 certificate.crt 和 private.key 文件移动到 Nginx 的配置目录(例如 /etc/nginx/ssl/)。

  2. 编辑 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default):

server {listen 443 ssl;server_name yourdomain.com;  # 你的域名ssl_certificate /etc/nginx/ssl/certificate.crt;  # 证书文件路径ssl_certificate_key /etc/nginx/ssl/private.key;  # 私钥文件路径location / {root   html;  # 你的根目录index  index.html index.htm;}
}

  1. 重启 Nginx 以应用配置:
sudo systemctl restart nginx

Apache 中使用自签名证书

  1. 将 certificate.crt 和 private.key 文件放到 Apache 的 SSL 目录(例如 /etc/ssl/)。

  2. 编辑 Apache 配置文件(通常是 /etc/httpd/conf/httpd.conf 或者 /etc/apache2/sites-available/default-ssl.conf):

<VirtualHost *:443>ServerName yourdomain.comSSLEngine onSSLCertificateFile "/etc/ssl/certificate.crt"  # 证书路径SSLCertificateKeyFile "/etc/ssl/private.key"  # 私钥路径DocumentRoot "/var/www/html"  # 你的网站根目录
</VirtualHost>

  1. 启用 SSL 模块并重启 Apache:
sudo a2enmod ssl
sudo systemctl restart apache2

2. 浏览器信任自签名证书

由于是自签名证书,浏览器可能会警告连接不安全。你可以通过将证书导入到机器的受信任的根证书颁发机构来解决这个问题:

  • 双击 certificate.crt 文件,选择“安装证书”。
  • 选择“本地计算机”,然后选择“将所有的证书放入下列存储”。
  • 选择“受信任的根证书颁发机构”。

总结

这样,你就完成了从生成自签名证书到在 Web 服务器上使用它的整个流程!如果有任何问题,或者你需要更多帮助,请随时告诉我!😄

后续补充

...

3.问题/补充

1. 也可以借助自动化工具来实现 --- 但是也有点麻烦,要安装一些软件包

GitHub - FiloSottile/mkcert: A simple zero-config tool to make locally trusted development certificates with any names you'd like.

2. 

后续补充

...


http://www.mrgr.cn/news/91794.html

相关文章:

  • 保姆级! 本地部署DeepSeek-R1大模型 安装Ollama Api 后,Postman本地调用 deepseek
  • Hopper架构 GEMM教程
  • Debezium:实时数据捕获与同步的利器
  • 【飞行器原理学习】——1. 机翼及机翼参数
  • 【Python 专题】数据结构 树
  • 自动化之ansible(二)
  • Ecode在流程表单中插入自定义内容
  • 【鸿蒙笔记-基础篇_状态管理】
  • Debezium连接器对比
  • Python与Anaconda在CUDA环境中的角色解析
  • postcss.config.js 动态配置基准值
  • 【教学类-89-06】20250220新年篇05——元宵节灯笼
  • 【学习笔记】Cadence电子设计全流程(二)原理图库的创建与设计(1-4)
  • 毕业项目推荐:基于yolov8/yolov5/yolo11的果蔬检测识别系统(python+卷积神经网络)
  • go-micro
  • 设计模式教程:责任链模式(Chain of Responsibility Pattern)
  • 调用click.getchar()时Windows PyCharm无法模拟键盘输入
  • Jenkins 创建 Node 到 Windows
  • 矩阵加减乘除的意义与应用
  • Docker Mysql 数据迁移