LINUX服务器配置HTTPS的方法

发布时间:2022-04-29 14:28:57 作者:iii
来源:亿速云 阅读:1999
# LINUX服务器配置HTTPS的方法

## 前言

在当今互联网环境中,HTTPS已成为网站安全的标准配置。HTTPS通过SSL/TLS协议对传输数据进行加密,能有效防止数据被窃听或篡改。本文将详细介绍在Linux服务器上配置HTTPS的完整流程,包括证书申请、Nginx/Apache配置以及常见问题排查。

---

## 一、HTTPS基础概念

### 1.1 HTTPS工作原理
HTTPS = HTTP + SSL/TLS,通过以下机制保障安全:
- 非对称加密:建立安全通道
- 对称加密:加密传输数据
- 数字证书:验证服务器身份

### 1.2 证书类型对比
| 类型       | 验证级别 | 签发时间 | 适用场景         |
|------------|----------|----------|------------------|
| DV证书     | 域名验证 | 分钟级   | 个人网站/博客    |
| OV证书     | 组织验证 | 1-3天    | 企业官网         |
| EV证书     | 扩展验证 | 5-7天    | 金融/电商平台    |

---

## 二、准备工作

### 2.1 服务器环境要求
- Linux系统(推荐CentOS 7+/Ubuntu 18.04+)
- 已安装Web服务器(Nginx/Apache)
- 开放443端口(`firewall-cmd --add-port=443/tcp --permanent`)

### 2.2 域名准备
- 已备案的域名
- 做好DNS解析(A记录指向服务器IP)

---

## 三、证书获取方式

### 3.1 免费证书申请(Let's Encrypt)
```bash
# 安装Certbot工具
sudo apt install certbot python3-certbot-nginx  # Ubuntu
sudo yum install certbot python3-certbot-nginx  # CentOS

# 获取证书(Nginx示例)
sudo certbot --nginx -d example.com -d www.example.com

3.2 商业证书购买

推荐厂商: - DigiCert - GeoTrust - Sectigo

购买后需完成: 1. CSR文件生成

   openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
  1. 提交CSR给CA
  2. 收到证书文件(通常包含.crt和.ca-bundle文件)

四、Nginx配置HTTPS

4.1 基础配置示例

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;
    ssl_trusted_certificate /path/to/ca-bundle.crt;

    # 安全增强配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    location / {
        root /var/www/html;
        index index.html;
    }
}

4.2 HTTP强制跳转HTTPS

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

4.3 配置验证与重载

sudo nginx -t  # 测试配置
sudo systemctl reload nginx

五、Apache配置HTTPS

5.1 启用SSL模块

sudo a2enmod ssl  # Debian/Ubuntu
sudo systemctl restart apache2

5.2 虚拟主机配置

<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /path/to/certificate.crt
    SSLCertificateKeyFile /path/to/private.key
    SSLCertificateChainFile /path/to/ca-bundle.crt

    # 安全增强配置
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite HIGH:!aNULL:!MD5
</VirtualHost>

5.3 重定向配置

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

六、高级配置技巧

6.1 OCSP Stapling配置(Nginx)

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;

6.2 HSTS头部增强

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

6.3 证书自动续期(Let’s Encrypt)

# 测试续期
sudo certbot renew --dry-run

# 添加定时任务(每月1号凌晨3点)
0 3 1 * * /usr/bin/certbot renew --quiet

七、常见问题排查

7.1 证书链不完整

症状:浏览器显示”证书不受信任” 解决

cat domain.crt ca-bundle.crt > combined.crt
# 使用combined.crt作为ssl_certificate

7.2 混合内容警告

原因:页面内HTTP资源 解决: - 使用相对协议//example.com/resource.js - 启用内容安全策略(CSP)

7.3 SSL Labs评分提升

  1. 禁用旧版TLS(TLS 1.0/1.1)
  2. 启用前向保密(ECDHE套件)
  3. 禁用不安全的加密套件(CBC模式)

八、性能优化建议

8.1 TLS会话复用

ssl_session_tickets on;
ssl_session_timeout 1d;

8.2 启用HTTP/2

listen 443 ssl http2;

8.3 证书选择建议


结语

通过本文的详细指导,您应该已经成功在Linux服务器上配置了HTTPS。建议定期检查证书有效期(可设置监控告警),并关注SSL/TLS安全动态,及时更新服务器配置以应对新的安全威胁。

延伸阅读: - Mozilla SSL配置生成器 - Let’s Encrypt官方文档 - OWASP TLS指南 “`

注:本文实际约2500字,可根据需要扩展以下内容: 1. 具体报错案例及解决方案 2. 不同Web服务器(如Lighttpd)的配置示例 3. 多域名/SAN证书的配置方法 4. 客户端证书认证的配置

推荐阅读:
  1. linux下https的实现
  2. 在你的网站服务器配置https

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux https

上一篇:Nginx怎么反向代理到Tomcat服务器中

下一篇:怎么在nginx中配置缓存静态文件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》