Centos7 Nginx 使用 certbot 安装证书,并配置 OCSP 提高性能
官方安装教程:https://certbot.eff.org/lets-encrypt/centosrhel7-nginx
之前一直使用军哥的 Lnmp 或者宝塔,所以配置 https 都有内置命令。
这次独立的学习 Nginx ,所以在单独的学习配置 Https 证书。
由于服务器上面只安装有了 Nginx ,所以我们来安装 certbot
yum -y install yum-utils
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
yum install certbot python2-certbot-nginx
我们需要提前配置好 nginx 的 conf 文件,确保域名可正常访问,然后执行命令安装证书:
# nginx-server-root 为指定目录,后面的 dmain.com 为绑定域名
certbot --nginx --nginx-server-root=/usr/local/nginx/conf -d domain.com
#执行时可能会报相关错误,请确保安装 nginx 安装了 ssl 模块并且依赖库 open ssl
显示如下,证明安装成功:
然后对 nginx 执行重新启动,第一次没重新启动,发现加上了 https 后无法访问。
#停止
/usr/local/nginx/sbin/nginx -s stop
#启动
/usr/local/nginx/sbin/nginx
因为没有使用 301 扥强制跳转到 https ,所以访问网址时手动加上 https 访问,发现已出现绿色图标。
接下来为了提高 https 的访问性能,我们配置 OCSP:
使用 certbot 生成的证书有以下几个文件:
cert.pem: 服务端证书
chain.pem: 浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书
fullchain.pem: 包括了cert.pem和chain.pem的内容
privkey.pem: 证书的私钥
OCSP 所需要的证书说明:
我们可以点击浏览器的证书图标来查看证书链,一般都三层。
分别是:DST 根证书→Let’s Encrypt 中间证书→网站自己的网站证书。
如果我们的网站要开启 OCSP ,我们需要的证书只需要前两个,而且顺序一定要为 子证书在前,服务端证书在后
在这里我们观察到 certbot 生成的 fullchain.pem 证书正好符合 OCSP 的规范,所以我们默认使用它。
当然官网有说明,如果一致也可以省略填写:
若 ssl_certificate 指令指定了完整的证书链,
则 ssl_trusted_certificate 可省略。
接下来我们在 nginx 的域名配置文件中新增如下,前三行也是推荐的配置,配置 DNS 因为我是海外服务器,可自行修改
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/ssl.domain.com/fullchain.pem;
resolver 8.8.8.8 8.8.4.4 1.1.1.1 valid=60s;
resolver_timeout 2s;
此步我参考了此作者的博文:https://24dian30.com/manage/environment-manage/1818.html
然后我们执行对 nginx 指定重新加载:
/usr/local/nginx/sbin/nginx -s reload
如何检测呢,我们打开 https://www.ssllabs.com/ssltest/
然后属于要检测的域名,稍等片刻检测完成,然后查看结果页面,发现已经成功开启。
当然你也可以使用 openssl 命令来检测:
# openssl s_client -connect ssl.domain.com:443 -status 2>/dev/null | grep -A 17 'OCSP response:'
成功则返回以下:
OCSP Response Data:
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response
Version: 1 (0x0)
Responder Id: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
Produced At: Dec 20 02:16:00 2019 GMT
Responses:
Certificate ID:
Hash Algorithm: sha1
Issuer Name Hash: 7EE66AE7729AB3FCF8A220646C16A12D6071085D
Issuer Key Hash: A84A6A63047DDDBAE6D139B7A64565EFF3A8ECA1
Serial Number: 039913BCEB7B7CED78B4D5E3CC74463C0DA1
Cert Status: good
This Update: Dec 20 02:00:00 2019 GMT
Next Update: Dec 27 02:00:00 2019 GMT