You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

指向AWS独立服务器的子域名SSL证书配置方案咨询

别慌!完全不懂SSL也没关系,我给你拆成**域名管理端(SSL证书申请)AWS服务器端(证书部署+Web服务配置)**两个部分,一步步来操作,保证你能搞定:

一、域名管理端操作:申请并获取SSL证书

这一步是在你那个带域名管理功能的Web服务器后台完成:

  • 第一步:订购对应子域名的SSL证书
    进入后台找到SSL证书订购入口,选择单域名证书(只给你的目标子域名用就够了),填写你的子域名(比如sub.yourdomain.com),完成订单支付。
  • 第二步:验证域名所有权
    服务商一般会提供几种验证方式,最省心的是DNS验证
    • 按照后台提示,添加一条DNS TXT记录到你的域名解析列表(就是你之前给子域名加A记录指向AWS IP的同一个地方)
    • 等待10-30分钟让DNS生效,你可以在本地终端用nslookup -type=TXT 你的子域名命令确认记录是否生效。
  • 第三步:下载SSL证书文件
    验证通过后,服务商就会签发证书,你需要下载三个核心文件:
    • 主证书文件(通常叫cert.pemyourdomain.crt
    • 中间证书文件(通常叫chain.pembundle.crt
    • 私钥文件(非常重要!别弄丢,通常叫private.key
二、AWS服务器端操作:部署证书+配置Web服务

下面分两种最常用的Web服务器(Nginx/Apache)来讲解,你的PHP项目大概率用的是其中一种:

情况1:如果AWS服务器用的是Nginx

  • 第一步:上传证书到服务器
    用SFTP工具或者scp命令,把刚才下载的三个文件传到AWS服务器的/etc/nginx/ssl/目录(如果没有这个目录,就用sudo mkdir -p /etc/nginx/ssl/创建)。记得给私钥设置安全权限:sudo chmod 600 /etc/nginx/ssl/private.key(防止其他用户读取)。
  • 第二步:修改Nginx配置文件
    找到你的PHP项目对应的Nginx配置文件(一般在/etc/nginx/sites-available//etc/nginx/conf.d/目录下),添加或修改HTTPS的server块:
    server {
        listen 443 ssl;
        server_name sub.yourdomain.com; # 替换成你的子域名
    
        ssl_certificate /etc/nginx/ssl/cert.pem; # 主证书路径
        ssl_certificate_key /etc/nginx/ssl/private.key; # 私钥路径
        ssl_trusted_certificate /etc/nginx/ssl/chain.pem; # 中间证书路径
    
        # 可选的安全优化配置,提升SSL安全性
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384;
        ssl_prefer_server_ciphers on;
    
        # 这里保留你原有PHP项目的配置,比如根目录、PHP解析规则
        root /var/www/your-php-project;
        index index.php index.html;
    
        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据你的PHP版本调整路径
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }
    
  • 第三步:添加HTTP跳转HTTPS(推荐)
    在同一个配置文件里加一个HTTP的server块,把所有80端口的请求自动跳转到HTTPS:
    server {
        listen 80;
        server_name sub.yourdomain.com;
        return 301 https://$server_name$request_uri;
    }
    
  • 第四步:验证配置并重启Nginx
    先测试配置是否正确:sudo nginx -t,如果提示test is successful,就重启Nginx生效:sudo systemctl restart nginx

情况2:如果AWS服务器用的是Apache

  • 第一步:上传证书到服务器
    用SFTP或scp把证书传到/etc/apache2/ssl/(Ubuntu/Debian)或/etc/httpd/ssl/(CentOS/RHEL)目录,同样给私钥设置权限:sudo chmod 600 /etc/apache2/ssl/private.key
  • 第二步:启用Apache的SSL模块
    Ubuntu/Debian:sudo a2enmod ssl;CentOS/RHEL:如果没装过SSL模块,先执行sudo yum install mod_ssl
  • 第三步:修改Apache虚拟主机配置
    找到你的虚拟主机配置文件(Ubuntu在/etc/apache2/sites-available/,CentOS在/etc/httpd/conf.d/),创建或修改HTTPS的虚拟主机:
    <VirtualHost *:443>
        ServerName sub.yourdomain.com
        DocumentRoot /var/www/your-php-project # 替换成你的PHP项目根目录
    
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/cert.pem # 主证书路径
        SSLCertificateKeyFile /etc/apache2/ssl/private.key # 私钥路径
        SSLCertificateChainFile /etc/apache2/ssl/chain.pem # 中间证书路径
    
        # 保留你原有PHP项目的目录配置
        <Directory /var/www/your-php-project>
            AllowOverride All
            Require all granted
        </Directory>
    
        # 可选的SSL安全配置
        SSLProtocol TLSv1.2 TLSv1.3
        SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384
        SSLHonorCipherOrder on
    </VirtualHost>
    
  • 第四步:添加HTTP跳转HTTPS(推荐)
    创建一个HTTP的虚拟主机配置,实现自动跳转:
    <VirtualHost *:80>
        ServerName sub.yourdomain.com
        Redirect permanent / https://sub.yourdomain.com/
    </VirtualHost>
    
  • 第五步:启用虚拟主机并重启Apache
    Ubuntu/Debian:sudo a2ensite your-ssl-config.conf(替换成你的配置文件名),然后sudo systemctl restart apache2;CentOS/RHEL:直接执行sudo systemctl restart httpd
最后验证

配置完成后,打开浏览器访问https://你的子域名,如果地址栏出现小锁标志,就说明HTTPS配置成功了,你的登录页面现在是加密安全的!

内容的提问来源于stack exchange,提问作者streeter1985

火山引擎 最新活动