要在Nginx服务器上安装证书,首先确保你已经获得了正确的SSL证书文件,再将证书文件和私钥文件上传到服务器上的适当位置,最后编辑Nginx配置文件,以指定SSL证书的路径和其他相关配置。本文将详细介绍如何下载SSL证书并在Nginx服务器上安装证书。
一、前提条件
1、已经通过SSL证书服务完成证书签发。
2、已准备好远程登录工具(例如PuTTY、Xshell),用于登录Web服务器。
二、版本说明
本文以CentOS 8操作系统、Nginx 1.14.1服务器系统为例进行说明。由于服务器系统版本不同,在操作过程中使用的命令可能会略有区别。
三、下载证书到本地
1、登录本站管理中心。
2、选择“SSL证书 > 证书管理> 进入SSL证书管理页面。
3、在证书下载面板,定位到Nginx服务器,单击操作列下的下载。
该操作会将Nginx服务器证书压缩包下载到本地,并保存在浏览器的默认下载位置。
4、打开浏览器的默认下载位置,解压已下载的Nginx证书压缩包文件。
解压后将会获得以下文件:
注意 :在本文中,我们将统一使用cert-file-name作为证书文件名的示例。例如,文中提到的证书文件将是cert-file-name.pem,而相应的私钥文件将是cert-file-name.key。在进行实际操作时,请确保使用真实的证书文件名来替换示例代码中的cert-file-name。
(1)PEM格式的证书文件
PEM格式的证书文件是一种采用Base64编码的文本文件,它支持包括证书在内的多种编码格式。可以根据需求将PEM格式的证书文件转换成其他格式。
(2)KEY格式的证书私钥文件
如果在申请证书时选择了手动填写CSR(证书签名请求)的方式,下载的证书文件压缩包可能不会包含KEY格式的私钥文件。在这种情况下,需要手动创建与证书相匹配的私钥文件。
四、在Nginx服务器上安装证书
在独立服务器、虚拟主机Nginx安装SSL证书的具体操作不同,请根据实际环境,选择对应的安装步骤。下面将演示如何在Nginx独立服务器上安装证书:
1、登录Nginx服务器。例如,可以使用远程登录工具(例如,PuTTY、Xshell)登录服务器。
2、执行以下命令,在Nginx安装目录(默认为/usr/local/nginx/conf)下创建一个用于存放证书的目录,将其命名为cert。
cd /usr/local/nginx/conf #进入Nginx默认安装目录。如果修改过默认安装目录,请根据实际配置进行调整。
mkdir cert #创建证书目录,命名为cert。
3、使用远程登录工具(例如,PuTTY、Xshell)附带的本地文件上传功能,将本地证书文件和私钥文件上传到Nginx服务器的证书目录(示例中为/usr/local/nginx/conf/cert)。
注意:如果在申请证书时将CSR生成方式设置为手动填写,请将手动创建的证书私钥文件上传至/usr/local/nginx/conf/cert目录。
4、编辑Nginx配置文件(nginx.conf),修改与证书相关的配置内容。执行以下命令,打开配置文件:
vim /usr/local/nginx/conf/nginx.conf
注意:nginx.conf默认保存在/usr/local/nginx/conf目录下。如果修改过nginx.conf的位置,请将/usr/local/nginx/conf/nginx.conf替换成修改后的位置。
5、按i键进入编辑模式。
6、在配置文件中定位到HTTP协议代码片段(http{}),并在HTTP协议代码里面添加以下server配置(如果server配置已存在,按照以下注释内容修改相应配置即可)。
使用示例代码前,请注意替换以下内容:
(1)yourdomain.com:替换成证书绑定的域名。
如果购买的是单域名证书,需要修改为单域名(例如www.domain.com);如果购买的是通配符域名证书,则需要修改为通配符域名(例如*.domain.com)。
(2)cert-file-name.pem:替换成在步骤3上传的证书文件的名称。
(3)cert-file-name.key:替换成在步骤3上传的证书私钥文件的名称。
在Nginx服务器上配置SSL证书,需要关注以下以‘ssl‘开头的重要属性,这些属性与证书配置密切相关。
server {
listen 443 ssl; # 设置HTTPS的默认监听端口为443。如果在配置文件中未指定此端口,可能会导致Nginx启动失败。对于Nginx 1.15.0及以上版本,应使用listen 443 ssl而非listen 443和ssl on的组合。
server_name yourdomain.com; # 将yourdomain.com替换为证书绑定的域名。
root html;
index index.html index.htm;
ssl_certificate cert/cert-file-name.pem; # 将cert-file-name.pem替换为已上传的证书文件名。
ssl_certificate_key cert/cert-file-name.key; # 将cert-file-name.key替换为对应的私钥文件名。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 定义支持的加密套件。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; # 设置支持的TLS协议版本。
ssl_prefer_server_ciphers on;
location / {
root html; # 指定网站的根目录。
index index.html index.htm;
}
}
确保将上述配置中的‘yourdomain.com‘、‘cert-file-name.pem‘和‘cert-file-name.key‘替换为实际的域名和证书文件名。此外,加密套件和协议应根据当前的安全标准和更佳实践进行选择。
(4)可选:设置HTTP请求自动跳转HTTPS。
若希望将所有的HTTP访问自动重定向至HTTPS页面,可以在处理HTTP请求的server块中添加一条rewrite指令。在应用以下示例代码时,请务必将‘yourdomain.com‘替换为证书所绑定的域名。
server {
listen 80;
server_name yourdomain.com; # 将yourdomain.com替换为证书绑定的域名。# 使用rewrite指令将所有HTTP请求重定向到相同的URI,但协议改为HTTPS。
rewrite ^(.*)$ https://$host$1;location / {
index index.html index.htm;
}
}
通过上述配置,所有来自用户的HTTP请求都将被透明地重定向至其HTTPS对应页面,确保了网站访问的安全性。
(5)修改完成后,按Esc键、输入:wq!并按Enter键,并退出编辑模式。
执行以下命令以重启Nginx服务:
cd /usr/local/nginx/sbin # 进入Nginx服务的可执行目录。
./nginx -s reload # 重新加载配置文件。
如果在重启Nginx服务时遇到问题,可以尝试以下排查方法:
若出现”the ‘ssl’ parameter requires ngx_http_ssl_module”的错误,表示需要重新编译Nginx,并在编译时加入‘–with-http_ssl_module‘参数。
若出现类似”no such file or directory”的错误,通常是证书文件路径不正确。请确保路径正确,并移除路径前的斜杠,例如将‘/cert/cert-file-name.pem‘修改为‘cert/cert-file-name.pem‘。
安装Nginx证书的步骤如下:
1、登录到服务器。
2、在Web服务器的根目录下创建一个名为‘cert‘的目录,并将证书和私钥文件上传至此目录。
3、打开虚拟主机配置文件(通常为‘*.conf‘),在文件末尾添加以下配置:
server {
listen 80;
server_name localhost;
location / {
index index.html index.htm;
}
}
server {
listen 443 ssl;
server_name localhost;
root html;
index index.html index.htm;
ssl_certificate cert/cert-file-name.pem; # 替换为证书文件名
ssl_certificate_key cert/cert-file-name.key; # 替换为私钥文件名
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
index index.html index.htm;
}
}
4、保存配置文件后退出。
5、可选:设置HTTP请求自动跳转到HTTPS。如果希望所有HTTP请求自动重定向至HTTPS页面,可以在网站的根目录下的‘.htaccess‘文件中添加以下代码:
apache
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://yourdomain.com$1 [R=301,L]
6、重启虚拟主机以应用配置更改。
注意:证书安装完成后,为确保全站支持HTTPS,可能需要在虚拟主机上配置伪静态规则。否则,可能只有网站首页支持HTTPS,而子目录不支持。