如何配置Nginx的SSL证书?

  

配置Nginx的SSL证书,可以使得我们的网站流量更加安全可靠。下面是详细的攻略:

确定证书来源

首先需要确定证书的来源。一般来说,有两种方式:

  1. 购买证书:可以到一些知名的证书机构购买SSL证书,如Symantec、DigiCert、GlobalSign等。
  2. 免费证书:免费SSL证书可以通过Let's Encrypt获取。

安装Nginx

在进行证书安装之前,需要先安装Nginx。可以在Ubuntu系统下使用以下命令安装:

sudo apt update
sudo apt install nginx

证书安装

1. 购买证书

如果选择购买证书,那么需要根据证书机构的指引来安装证书。

下面以Symantec证书为例,在购买证书后,需要对证书进行CSR请求,然后Symantec会向你的邮箱发送证书文件。将证书安装到服务器上,将以下文件放在一个新的目录下:

mydomain.crt      #证书文件
mydomain.key      #客户私钥文件
mydomain.ca-bundle #Symantec CA Bundle(可选)

2. 免费证书

如果选择免费证书,可以使用Let's Encrypt进行申请。

首先需要先安装certbot,可以使用以下命令:

sudo apt-get install python-certbot-nginx

然后使用以下命令申请证书:

sudo certbot --nginx -d your_domain.com

申请完成后,在/etc/letsencrypt/live/your_domain.com/目录下就可以找到证书文件。

配置Nginx

配置Nginx的SSL证书,需要修改Nginx配置文件/etc/nginx/sites-enabled/default

首先打开文件:

sudo vi /etc/nginx/sites-enabled/default

然后找到以下行并将其注释掉:

# listen 80 default_server;

接着添加以下内容,将其替换为上面提到的证书路径:

server {
    listen 80;
    server_name your_domain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name your_domain.com;

    ssl_certificate /path/to/mydomain.crt;
    ssl_certificate_key /path/to/mydomain.key;
    ssl_trusted_certificate /path/to/mydomain.ca-bundle;

    location / {
        root /var/www/html;
        index index.html;
    }
}

如果使用Let's Encrypt证书,则需要将以下内容替换到Nginx配置文件中:

ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;

接着重启Nginx:

sudo service nginx restart

然后访问https://your_domain.com就可以看到已经安装好的证书信息。

示例说明

示例1:购买Symantec证书

假设你购买了Symantec证书,证书文件名分别为mydomain.crtmydomain.keymydomain.ca-bundle

首先将证书文件上传到服务器的/var/sslcert/目录下:

sudo mkdir /var/sslcert/
sudo chmod 700 /var/sslcert/
sudo cp mydomain.crt /var/sslcert/
sudo cp mydomain.key /var/sslcert/
sudo cp mydomain.ca-bundle /var/sslcert/

然后打开Nginx配置文件并修改以下内容:

...
ssl_certificate /var/sslcert/mydomain.crt;
ssl_certificate_key /var/sslcert/mydomain.key;
ssl_trusted_certificate /var/sslcert/mydomain.ca-bundle;
...

最后重启Nginx:

sudo service nginx restart

示例2:使用Let's Encrypt免费证书

假设你已经安装了certbot并在your_domain.com上申请了证书。

首先打开Nginx配置文件,然后修改以下内容:

...
ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
...

最后重启Nginx:

sudo service nginx restart
相关文章