把SSL证书装到Nginx和Apache上

a
admin
作者
2026-07-12
发布日期
约 7 分钟
阅读时间

证书申请下来了,接下来要装到服务器上。这篇文档主要讲Nginx和Apache两种Web服务器的配置方法,照着抄就行。

先看看下载的文件

从SSL免费网下载的是一个zip压缩包,解压后有两个文件:

  • 域名.crt — 证书文件,里面包含域名证书和中间证书链
  • 域名.key — 私钥文件

把这两个文件上传到服务器。建议放在专门的位置,比如:

  • Nginx:/etc/nginx/ssl/
  • Apache:/etc/apache2/ssl/(Ubuntu)或 /etc/httpd/ssl/(CentOS)

记得给私钥文件设置安全的权限:

chmod 600 /etc/nginx/ssl/你的域名.key

Nginx配置

1. 上传文件

mkdir -p /etc/nginx/ssl

把.crt和.key文件传到这个目录

2. 写配置

打开你的Nginx配置文件(一般在 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/),加上HTTPS的server块:

server {

listen 443 ssl;

server_name example.com www.example.com;

ssl_certificate /etc/nginx/ssl/example.com.crt;

ssl_certificate_key /etc/nginx/ssl/example.com.key;

这几行优化SSL性能,建议加上

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;

ssl_prefer_server_ciphers on;

ssl_session_cache shared:SSL:10m;

ssl_session_timeout 10m;

root /var/www/html;

index index.html index.php;

location / {

try_files $uri $uri/ =404;

}

}

3. HTTP自动跳HTTPS

再加一个server块,把80端口的请求转到443:

server {

listen 80;

server_name example.com www.example.com;

return 301 https://$host$request_uri;

}

4. 测试并生效

nginx -t

systemctl reload nginx

没报错的话,浏览器访问 https://你的域名 就能看到锁标志了。

Apache配置

1. 上传文件

mkdir -p /etc/apache2/ssl

把.crt和.key文件传到这个目录

2. 开启SSL模块

a2enmod ssl

a2enmod rewrite

3. 写配置

在 /etc/apache2/sites-available/ 下创建或编辑配置文件:

ServerName example.com

ServerAlias www.example.com

SSLEngine on

SSLCertificateFile /etc/apache2/ssl/example.com.crt

SSLCertificateKeyFile /etc/apache2/ssl/example.com.key

SSLProtocol all -SSLv2 -SSLv3

SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256

DocumentRoot /var/www/html

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

4. HTTP跳HTTPS

ServerName example.com

ServerAlias www.example.com

RewriteEngine On

RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

5. 生效配置

a2ensite 你的配置文件名

apachectl configtest

systemctl reload apache2

配置完怎么检查

浏览器检查

访问 https://你的域名,地址栏出现锁标志就说明证书生效了。点锁标志能看证书详情,颁发机构是ZeroSSL。

在线工具检查

推荐用 SSL Labs 的检测工具(ssllabs.com/ssltest),能检测证书链、加密强度、协议支持等,给出一个综合评分。

常见问题

浏览器提示证书不信任?

检查一下服务器时间对不对,时间不对会导致证书验证失败。另外确认.crt文件里包含了完整的证书链。

启动Nginx报错?

大部分情况是证书文件路径不对,或者私钥跟证书不匹配。用 nginx -t 看具体报什么错。

配置了但访问还是HTTP?

检查一下有没有配80跳443的那个server块,没配的话用户直接输入HTTP地址不会自动跳转。

证书到期了怎么更新?

重新申请一张证书,下载新的.crt和.key文件,替换掉服务器上旧的文件,然后reload一下Web服务器就行。不用改配置文件。

本文到此结束