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 的简单且免费的解决方案,而自签名证书则适用于开发或测试环境。

相关推荐
深藏bIue9 分钟前
linux服务器mysql目录下的binlog文件删除
linux·服务器·mysql
虾..25 分钟前
Linux 进程状态
linux·运维·服务器
扛枪的书生1 小时前
Linux 通用软件包 AppImage 打包详解
linux
只想安静的写会代码1 小时前
网卡信息查询、配置、常见故障排查
linux·服务器·windows
偶像你挑的噻4 小时前
9-Linux驱动开发-设备树=>设备树插件实现 RGB 灯驱动
linux·驱动开发·stm32·嵌入式硬件
梁正雄5 小时前
linux服务-Nginx+Tomcat+Redis之Session 共享 - 容器compose
linux·nginx·tomcat
fengyehongWorld5 小时前
Linux rsync命令
linux
干啥都是小小白6 小时前
Linux C编程
linux·运维·服务器
赖small强6 小时前
【Linux 网络基础】WebSockets 技术指南
linux·网络·https·websockets·ping/pong
司铭鸿6 小时前
化学式解析的算法之美:从原子计数到栈的巧妙运用
linux·运维·服务器·算法·动态规划·代理模式·哈希算法