Linux系统配置HTTPS

在 Linux 系统上配置 HTTPS 需要几个步骤,包括获取 SSL/TLS 证书、配置 Web 服务器(如 Apache、Nginx)以及确保服务器支持 HTTPS 协议。这里以常见的 Nginx Web 服务器为例,介绍如何配置 HTTPS。

配置 HTTPS 的步骤:

1. 获取 SSL/TLS 证书

你可以通过以下方式获取 SSL/TLS 证书:

  • 使用自签名证书(适用于开发或内部测试环境)

  • 从受信任的证书颁发机构 (CA) 获取证书(适用于生产环境)

  • 使用 Let's Encrypt 免费获取证书

1.1 生成自签名证书(适合测试环境)

在 Linux 系统上,可以使用 openssl 来生成自签名证书。

复制代码
# 创建一个私钥和证书签名请求 (CSR)
openssl req -new -newkey rsa:2048 -nodes -keyout mydomain.key -out mydomain.csr
​
# 使用私钥签署自签名证书
openssl x509 -req -days 365 -in mydomain.csr -signkey mydomain.key -out mydomain.crt

此命令生成了 mydomain.key(私钥)和 mydomain.crt(自签名证书)。在实际配置时,你需要提供证书和私钥的路径。

1.2 从 Let's Encrypt 获取免费证书(推荐用于生产)

Let's Encrypt 提供免费 SSL 证书,可以通过工具 Certbot 获取和自动配置证书。

  1. 安装 Certbot
复制代码
# Ubuntu / Debian 系统
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx
  1. 获取证书
复制代码
# 使用 Certbot 为你的域名获取证书,并自动配置 Nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Certbot 将自动为你生成证书,并修改 Nginx 配置文件以启用 HTTPS。

2. 配置 Nginx
2.1 配置 HTTPS 虚拟主机

编辑 Nginx 配置文件(通常位于 /etc/nginx/sites-available/default/etc/nginx/nginx.conf),并添加如下配置:

复制代码
server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;
​
    ssl_certificate /etc/ssl/certs/mydomain.crt;
    ssl_certificate_key /etc/ssl/private/mydomain.key;
​
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
​
    location / {
        root /var/www/html;
        index index.html index.htm;
    }
}
​
# 强制 HTTP 重定向到 HTTPS
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
​
    return 301 https://$host$request_uri;
}
  • ssl_certificatessl_certificate_key 指定 SSL 证书和私钥的路径。

  • ssl_protocolsssl_ciphers 确保使用安全的加密协议和加密套件。

  • 第二个 server 块用于将 HTTP 请求重定向到 HTTPS。

2.2 验证 Nginx 配置

编辑完成后,验证 Nginx 配置是否正确:

复制代码
sudo nginx -t

如果配置正确,重启 Nginx 服务:

复制代码
sudo systemctl restart nginx
3. 测试 HTTPS 配置

通过浏览器访问 https://yourdomain.com,确保 HTTPS 配置成功。如果你使用了自签名证书,浏览器可能会警告该证书不受信任。

4. 自动续期(Let's Encrypt 证书)

Let's Encrypt 的证书有效期为 90 天。你可以通过以下命令手动续期证书:

复制代码
sudo certbot renew

通常,Certbot 会自动配置 cron 任务或系统计时器来自动续期证书。

总结

配置 HTTPS 涉及获取 SSL/TLS 证书并修改 Web 服务器配置文件,以确保服务器使用加密的 HTTPS 协议进行通信。使用 Let's Encrypt 是配置生产环境中 HTTPS 的简单且免费的解决方案,而自签名证书则适用于开发或测试环境。

相关推荐
Curtis09801 小时前
RHCE——Ubuntu Linux操作系统
linux·服务器·ubuntu
YRr YRr4 小时前
在Ubuntu 20.04和ROS中使用RViz进行数据可视化:详解Fixed Frame参数的选择与应用
linux·ubuntu·信息可视化
Hansel_Zhang4 小时前
CentOS 7 docker部署jar包
linux·docker·centos
运维&陈同学5 小时前
【Dubbo03】消息队列与微服务之dubbo-admin 二进制与编译安装
linux·运维·服务器·后端·微服务·云原生·架构·dubbo
Lemon_man_6 小时前
算法——反转字符串中的单词(leetcode151)
java·linux·前端
灼华十一6 小时前
消息队列-kafka
linux·docker·golang·kafka
MineGi7 小时前
0017. shell命令--tac
linux·bash
caz287 小时前
Windows远程桌面连接到Linux
linux·运维·服务器
Jackey_Song_Odd8 小时前
github webhooks 实现网站自动更新
linux·服务器·网络·ssh·github
zyy291829188 小时前
嵌入式Linux无窗口系统下搭建 Qt 开发环境
linux·嵌入式硬件·qt·物联网·iot