美文网首页
nginx - 配置 https 服务器(含免费证书申请)

nginx - 配置 https 服务器(含免费证书申请)

作者: 凉风儿 | 来源:发表于2017-04-28 16:54 被阅读0次

    说明

    以前总觉得搭建一个https服务器好难好难,亲手操作之后,其实并不难,因为现在可以从 letsencrypt 申请免费的 https 第三方证书,使用 certbot 工具更是将证书申请变得是分分钟搞定的易事。

    步骤

    1. 安装 certbot
    > yum install certbot # centos 7 下安装 certbot
    > apt-get install certbot # ubuntu 下安装 certbot
    

    注意:每个系统安装 certbot 都不太一样,具体的安装方式,参考官方网站

    1. 创建证书
    > certbot certonly --standalone -d example.com -d www.example.com # 证书作用于域名 example.com 和 www.example.com
    

    相关路径

    /etc/letsencrypt/live/www.zmzd.com.cn # 证书目录(链接文件,链接到下面目录中的证书文件)
    /etc/letsencrypt/archive/www.zmzd.com.cn # 真实证书目录,这儿的证书可以拷贝,比如到docker容器中...
    

    另外:也可以自建证书,方法如下

    > openssl genrsa -out privkey.pem 1024/2038 # 生成私钥
    > openssl req -new -x509 -key privkey.pem -out server.pem -days 365 # 根据私钥生成公钥
    

    注意:自建证书不被浏览器认可,打开网站会被阻止,地址栏显示红色警告,但仍然可以访问。

    1. 在 nginx 的 server 区块配置 ssl 相关参数
    # https
    listen 443 ssl; # 启用 ssl 安全协议
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # 设置公钥的位置
    ssl_certificate_key /etc/letsencrypt/live/example.com/fullchain.pem; # 设置私钥的位置
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    
    1. 重启 nginx,搞定!
      在浏览器中用 https 协议访问你的域名是不是绿色的了?

    备注

    1. certbot 生成的证书有效期为3个月,即将到期时可用如下命令重新生成证书文件
    > certbot renew # 重新生成证书,建议加入到 crontab 定时任务中
    > certbot renew  --dry-run # 测试自动更新证书
    
    1. 可以添加 HSTS 协议,以让站点更加安全
      在头信息中添加 Strict-Transport-Security "max-age=63072000; includeSubdomains;"
      其中Strict-Transport-Security 是 Header 字段名, 后面的 max-age 代表 HSTS 在客户端的生效时间。 includeSubdomains 表示对所有子域名生效。
    # nginx 配置
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains;";
    

    参考

    certbot 官方
    letsencrypt 官方
    申请Let's Encrypt免费ssl证书流程和部署https服务
    安全补脑 - 开启 HSTS 协议让你的站点更加安全

    相关文章

      网友评论

          本文标题:nginx - 配置 https 服务器(含免费证书申请)

          本文链接:https://www.haomeiwen.com/subject/kdczattx.html