来源:自学PHP网 时间:2020-10-04 19:25 作者:小飞侠 阅读:次
[导读] Nginx配置https原理及实现过程详解...
今天带来Nginx配置https原理及实现过程详解教程详解
使用linux实用工具certbot来生成https证书 这个工具是生成Let's Encrypt证书, Let's Encrypt数字证书认证机构,Let's Encrypt 是由互联网安全研究小组(ISRG,一个公益组织)提供的服务 提供免费的SSL/TLS证书 2015年12月3日,该服务进入公测阶段,正式面向公众。 2016年4月12日,该项目正式离开Beta阶段。 到2016年9月9日,Let's Encrypt 已经发放 1000 万张证书。 因此对于大部分中小型网站来说,是一个值得考虑的选择。 https配置的步骤 1打开 https://certbot.eff.org/ 选择对应操作系统与 Web 服务器 这里我选择nginx服务器,CentOS7服务器上 2执行命令,并根据需要修改相应域名参数。 certbot要通过yum安装,certbot被打包到epel源中, 所以安装启动epel库,安装epel源查看链接 https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F 启动epel源,可以使用手动自己启动epel,也可以借助yum-config-manager命令来启动 安装yum-config-manager yum -y install yum-utils 启动epel yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional 3安装certbot sudo yum install certbot python2-certbot-nginx 获取证书的两种方式:身份验证器和安装程序 使用webRoot插件进行安装,这个要求你的服务器80端口能够正常被访问到(这个域名是属于你的)
上面的 /var/www/example表示的是在nginx配置文件中root根节点所指向的根路径 webroot插件的工作原理是为每个请求的域创建一个临时文件${webroot-path}/.well-known/acme-challenge。 然后,Let的加密验证服务器发出HTTP请求,以验证每个请求的域的DNS是否解析为运行certbot的服务器。 访问请求如下
所以我们服务器需要放通.well-known/acme-challenge这个访问路径 例如, server { listen 80; server_name www.example.com; index index.html ; root /var/www/example; 。。。 location ~ /.well-known { allow all; } } 具体的http配置文件 server { listen 80; server_name www.example.com; index index.html ; root /var/www/www.example.com; location / { proxy_redirect off; proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-real-ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #error_page 404 /404.html; location /nginx_status { #stub_status on; #access_log off; } location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log /data/log/nginx//var/www/www.example.com/-access.log; error_log /data/log/nginx//var/www/www.example.com/-error.log; } 执行完命令后,https证书就会生成在/etc/letsencrypt/live目录下
比如上面的命令会生成证书/etc/letsencrypt/live/www.example.com/fullchain.pem 生成证书密钥文件/etc/letsencrypt/live/www.example.com/privkey.pem 然后我们只需要为该域名加上https配置,我们nginx就配置完成https https对应443端口 具体https配置文件 server { listen 443 ssl http2; #listen [::]:443 ssl http2; server_name www.example.com; index index.html index.htm index.php default.html default.htm default.php; root /var/www/www.example.com/; ssl on; ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; location / { proxy_redirect off; proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-real-ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #error_page 404 /404.html; include enable-php-pathinfo.conf; location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log /data/log/nginx/www.example.com-ssl-access.log; error_log /data/log/nginx/www.example.com-ssl-error.logs; } 查看生产的证书 tree /etc/letsencrypt/live/ 证书续签 Let's Encrypt 生成的免费证书为3个月时间,但是我们可以无限次续签证书 certbot renew 使用定时器来自动重新生成证书 0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew centos6使用 1获取certbot客户端 wget https://dl.eff.org/certbot-auto 2停止nginx service nginx stop 3生成证书 ./certbot-auto certonly --standalone --email `你的邮箱地址` -d `你的域名地址` 当前网站有多个域名时需在后面增加,例如 ./certbot-auto certonly --standalone --email `你的邮箱地址` -d `你的域名1` -d `你的域名2` 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学php网。 以上就是关于Nginx配置https原理及实现过程详解全部内容,感谢大家支持自学php网。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com