nginx使用免费ssl证书

nginx开启https

使用Letsencrypt为域名申请免费证书,不是泛域名的方式,是单域名或者多域名方式,会有多个公钥跟私钥

使用standalone方式获取证书

安装letsencrypt

git clone https://github.com/letsencrypt/letsencrypt

进入目录

cd letsencrypt

执行命令获取证书,注意用standalone方式获取证书,需要关闭服务器的80端口,因为会占用这个端口

--email制定证书过期通知邮件,-d制定要为那个域名申请证书,可以通过-d指定多域名

注意,指定的域名必须可以查到a记录,在域名供应商那边有绑定固定IP

./letsencrypt-auto certonly --standalone --email xxx@qq.com -d www.xxx.com

生成的证书公钥,私钥在/etc/letsencrypt/live里面,以域名为名字的目录

修改nginx的配置文件,启用ssl证书验证

server {
    listen 443 ssl;
    server_name 填入域名 ;
    error_log    logs/apple_app_error.log    error;
    access_log    logs/apple_access.log    main;
    ssl on;
    #指定证书公钥
    ssl_certificate /etc/letsencrypt/live/app.blockmango.net/fullchain.pem;
    #指定证书私钥
    ssl_certificate_key /etc/letsencrypt/live/app.blockmango.net/privkey.pem;

    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   # ssl_protocols SSLv3 TLSv1;

#    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 

    ssl_prefer_server_ciphers on;
        location /apple-app-site-association {
            default_type application/json;
            expires 1d;
        }
        location / {
            root   html;
            index  index.html index.htm;
            expires 1d;
        }
        #error_page  404              /404.html;

        #redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }



}

  重启nginx服务即可

注意通过免费的方式申请的证书,只有三个月有效期,三个月后要为过期的证书更新

还有使用standalone这种方式申请或者更新的,操作前都需要关闭http服务,更新后再打开http服务

还有一种方式比较好用的,是webroot,但是这种方式需要在改服务器还没有申请过证书前,即nginx的配置文件没修改成ssl模式前使用

因为本次对服务器申请证书,是之前已经有过其他域名证书申请了,且是用standalone方式申请的,现在改为webroot的话有点麻烦,所以继续使用standalone方式为新域名申请证书

当然这样的话,就必须维护多个证书

参考链接:https://blog.csdn.net/dancen/article/details/81311688

原文地址:https://www.cnblogs.com/allmdzz/p/12966171.html