插件窝 干货文章 CentOS 6和CentOS 7上搭建web服务器的SSL证书配置

CentOS 6和CentOS 7上搭建web服务器的SSL证书配置

SSL Nginx domain httpd 543    来源:    2025-04-12

CentOS 6和CentOS 7上搭建Web服务器的SSL证书配置指南

准备工作

在开始配置SSL证书前,请确保: 1. 已安装Web服务器(Apache或Nginx) 2. 已获取SSL证书文件(通常包括.crt文件和.key文件) 3. 已获取CA证书链文件(通常为.ca-bundle或.chain.crt文件)

Apache服务器配置

CentOS 6 & 7通用配置

  1. 安装mod_ssl模块

    yum install mod_ssl
    
  2. 将证书文件复制到适当位置

    mkdir -p /etc/httpd/ssl
    cp your_domain.crt /etc/httpd/ssl/
    cp your_domain.key /etc/httpd/ssl/
    cp your_domain.ca-bundle /etc/httpd/ssl/
    
  3. 修改SSL配置文件

    • CentOS 6: /etc/httpd/conf.d/ssl.conf
    • CentOS 7: /etc/httpd/conf.d/ssl.conf

    修改以下内容:

    <VirtualHost *:443>
       ServerName yourdomain.com
       DocumentRoot "/var/www/html"
    
       SSLEngine on
       SSLCertificateFile /etc/httpd/ssl/your_domain.crt
       SSLCertificateKeyFile /etc/httpd/ssl/your_domain.key
       SSLCertificateChainFile /etc/httpd/ssl/your_domain.ca-bundle
    
       # 启用HTTP严格传输安全(HSTS)
       Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
    </VirtualHost>
    
  4. 重启Apache服务

    service httpd restart  # CentOS 6
    systemctl restart httpd  # CentOS 7
    

Nginx服务器配置

CentOS 6 & 7通用配置

  1. 安装Nginx和OpenSSL

    yum install nginx openssl
    
  2. 将证书文件复制到适当位置

    mkdir -p /etc/nginx/ssl
    cp your_domain.crt /etc/nginx/ssl/
    cp your_domain.key /etc/nginx/ssl/
    cp your_domain.ca-bundle /etc/nginx/ssl/
    
  3. 修改Nginx配置文件: 编辑/etc/nginx/conf.d/ssl.conf或主配置文件/etc/nginx/nginx.conf

    server {
       listen 443 ssl;
       server_name yourdomain.com;
    
       ssl_certificate /etc/nginx/ssl/your_domain.crt;
       ssl_certificate_key /etc/nginx/ssl/your_domain.key;
    
       # 合并证书和CA链
       # cat your_domain.crt your_domain.ca-bundle > /etc/nginx/ssl/your_domain.chained.crt
       # 然后使用: ssl_certificate /etc/nginx/ssl/your_domain.chained.crt;
    
       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384...';
       ssl_prefer_server_ciphers on;
    
       # HSTS设置
       add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    
       location / {
           root /usr/share/nginx/html;
           index index.html index.htm;
       }
    }
    
  4. 重启Nginx服务

    service nginx restart  # CentOS 6
    systemctl restart nginx  # CentOS 7
    

系统特定注意事项

CentOS 6特有配置

  1. OpenSSL版本较旧

    • 默认不支持TLS 1.2,建议升级OpenSSL
    • 如果无法升级,使用较旧的加密套件: apache SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
  2. 服务管理命令不同

    service httpd restart
    chkconfig httpd on
    

CentOS 7特有配置

  1. 使用firewalld开放端口

    firewall-cmd --permanent --add-service=https
    firewall-cmd --reload
    
  2. 使用systemd管理服务

    systemctl enable httpd
    systemctl restart httpd
    

验证配置

  1. 检查SSL配置

    openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
    
  2. 在线工具验证

常见问题解决

  1. 证书链不完整

    • 确保将中间证书附加到您的证书文件中
    • 对于Apache:使用SSLCertificateChainFile
    • 对于Nginx:将证书和链合并为一个文件
  2. 私钥不匹配

    • 验证私钥是否与证书匹配: bash openssl x509 -noout -modulus -in your_domain.crt | openssl md5 openssl rsa -noout -modulus -in your_domain.key | openssl md5
    • 两个命令的输出应该相同
  3. SELinux阻止访问

    • 检查SELinux日志:grep avc /var/log/audit/audit.log
    • 调整上下文: bash chcon -R -t httpd_sys_content_t /etc/httpd/ssl/
  4. 混合内容警告

    • 确保网页中的所有资源都使用HTTPS链接
    • 考虑添加内容安全策略头

按照以上步骤,您应该能够在CentOS 6或7上成功配置SSL证书。根据您的具体环境和需求,可能需要进行一些调整。