凌峰创科服务平台

Linux服务器如何搭建HTTPS?

在Linux服务器上搭建HTTPS服务是保障网站安全传输数据的重要步骤,通常涉及获取SSL证书、配置Web服务器以及强制跳转等操作,以下以Nginx和Apache两种主流Web服务器为例,详细说明HTTPS的搭建流程。

Linux服务器如何搭建HTTPS?-图1
(图片来源网络,侵删)

准备工作

  1. 域名解析:确保服务器域名已正确解析到服务器IP地址,可通过ping 域名验证。
  2. 安装Web服务器:以CentOS系统为例,安装Nginx执行yum install nginx -y,安装Apache执行yum install httpd -y
  3. 开放端口:防火墙放行80(HTTP)和443(HTTPS)端口,命令为:
    firewall-cmd --permanent --add-service=http
    firewall-cmd --permanent --add-service=https
    firewall-cmd --reload

获取SSL证书

HTTPS依赖SSL证书,可通过以下方式获取:

  • 免费证书:使用Let's Encrypt,通过Certbot工具自动申请。
    安装Certbot:yum install certbot python3-certbot-nginx(Nginx)或yum install certbot python3-certbot-apache(Apache)。
    申请证书(以Nginx为例):certbot --nginx -d 域名,按提示完成域名验证和证书安装。
  • 付费证书:从DigiCert、GlobalSign等厂商购买,下载后上传至服务器/etc/ssl/certs/目录。

Nginx配置HTTPS

  1. 编辑配置文件vi /etc/nginx/nginx.conf或站点配置文件(如/etc/nginx/conf.d/default.conf)。

  2. 添加HTTPS配置

    server {
        listen 80;
        server_name 域名;
        return 301 https://$host$request_uri; # 强制跳转HTTPS
    }
    server {
        listen 443 ssl;
        server_name 域名;
        ssl_certificate /etc/letsencrypt/live/域名/fullchain.pem; # 证书路径
        ssl_certificate_key /etc/letsencrypt/live/域名/privkey.pem; # 私钥路径
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
        }
    }
  3. 检查并重启Nginxnginx -t验证配置,systemctl restart nginx生效。

    Linux服务器如何搭建HTTPS?-图2
    (图片来源网络,侵删)

Apache配置HTTPS

  1. 编辑配置文件vi /etc/httpd/conf.d/ssl.conf

  2. 修改SSL配置

    <VirtualHost *:443>
        ServerName 域名
        DocumentRoot /var/www/html
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/域名/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/域名/privkey.pem
        SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
        SSLCipherSuite HIGH:!aNULL:!MD5
    </VirtualHost>
    <VirtualHost *:80>
        ServerName 域名
        Redirect permanent / https://域名/ # 强制跳转
    </VirtualHost>
  3. 重启Apachesystemctl restart httpd

验证与优化

  1. 测试HTTPS:浏览器访问https://域名,查看地址栏是否有锁标志,或通过openssl s_client -connect 域名:443验证证书。
  2. 自动续签Let's Encrypt证书:Certbot默认设置自动续签,可通过crontab -e添加定时任务:
    0 3 * * * /usr/bin/certbot renew --quiet
  3. 性能优化:启用HTTP/2(Nginx需listen 443 ssl http2;),配置OCSP装订提升加载速度。

常见问题处理

  • 证书不信任:检查证书链是否完整,私钥是否匹配。
  • 协议不安全:禁用弱协议(如SSLv3、TLSv1.0),优先使用TLSv1.2及以上。
  • 强制跳转失败:确保80端口配置正确,防火墙未拦截。

相关问答FAQs

Q1:Let's Encrypt证书过期后如何手动续签?
A1:执行certbot renew --dry-run测试续签功能,若无报错则直接运行certbot renew,或通过certbot renew --force强制续签,续签后需重启Web服务器(Nginx/Apache)加载新证书。

Linux服务器如何搭建HTTPS?-图3
(图片来源网络,侵删)

Q2:如何配置多个域名的HTTPS证书?
A2:

  • 单证书多域名:申请证书时添加多个域名(certbot --nginx -d 域名1 -d 域名2),配置文件中通过server_name包含所有域名。
  • 多域名证书(SAN):购买支持主题备用名称(SAN)的付费证书,或在申请Let's Encrypt证书时使用-d参数指定多个域名。
  • 通配符证书:通过certbot certonly --manual -d *.域名申请通配符证书,需手动完成DNS验证。
分享:
扫描分享到社交APP
上一篇
下一篇