网站域名HTTPS证书配置

网站域名HTTPS证书配置

让NGINX支持SSL

需要编译时支持ssl,可以sbin/nginx -V 来查看confiture参数,如果当时没有支持,那么需要重新编译安装。 编译参数前面已经有一篇文章了。nginx编译参数,也不用全加,用--with-http_ssl_module 就可以了。

生成证书

主要参考这个letsencrypty,可以生成免费证书。 生成方式也很简单,读上面的文章基本就能明白。ubuntu+nginx.


  1. ubuntu 用户的大致步骤如下:
    sudo apt-get install software-properties-common
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update
    sudo apt-get install certbot

  2. 给自己的服务器生成对应的认证文件,需要给每个域名都生成一下,下面指的是3个域名,将里面的yourpath1.2.3换成你自己的代码目录就可以。
    certbot certonly --webroot -w /yourpath1 -d yourdomain1.com
    certbot certonly --webroot -w /yourpath2 -d yourdomain2.com
    certbot certonly --webroot -w /yourpath3 -d yourdomain3.com

Automating renewal

  1. 上面生成的证书,有效期好像是90天,所以需要到期自己重新renewal一下。方法如下:
    sudo certbot renew // 只有过期才会生成
    sudo certbot renew --force-renewal // 强制重新生成
    执行完之后系统中会生成这些文件。
    系统中生成的文件

  2. 加密文件分析
    每个域名的文件都会放在一个目录里面。live目录中的只是archive目录总文件的一个软链,没重新renew一次,archive中的文件都会多一个,表现为数字后缀的增加。同时live中的软链也会变成最新的有效的文件,软连名称不变,只是指向变成了较新的内容。如果感觉自己的renew有问题,或者renew过程中遇到了问题,可以直接将/etc/letsencrypt 这个目录直接删除,重新用上面的步骤重新设置一下我们的域名,然后对应的文件都会重新生成。执行完之后,我们可以通过sudo certbot certificates 查看我们的证书的详情,包括证书的存放位置,证书还有多少天过期等信息。
    sudo certbot certificates
    证书详情

配置NGINX

  1. nginx 配置说明
    配置就不多说了.首先需要配置2个server,监听2个端口。这样可以强制将80端口的请求重定向至443端口。https本身监听的是443端口。最主要的是ssl中间那3行。将步骤2中生成的对应key写在nginx的配置文件里。注意改成你的具体路径。
  2. nginx 配置文件示例
server {
    listen       443;
    server_name  blog.nofile.cc;

    ssl                  on;
    ssl_certificate      /xxxx/letsencrypt/live/yoursite/fullchain.pem;
    ssl_certificate_key  /xxxx/letsencrypt/live/yoursite/privkey.pem;
   
     location / {
        #这个地方指定被访问的文件夹位置
        root   /your/webroot/;
        index  index.html;
    }
}
server {
    listen      80;
    server_name blog.nofile.cc;
    return 301 https://blog.nofile.cc$request_uri;  
}

配置好之后,重启nginx,应该就可以看到绿色的锁了。

参考资料

  1. letsencrypt

Leave a Reply

Your email address will not be published. Required fields are marked *