在Centos和Nginx中配置部署Let's Encrypt

来源:互联网 发布:网络传输文件软件 编辑:程序博客网 时间:2024/05/21 00:54

查看自己的服务器配置:CentOS release 6.5 (Final)
命令: cat /etc/issue 或cat /etc/redhat-release
查看系统多少位:getconf LONG_BIT

一、配置Nginx
首先安装系统缺少的包:

yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

安装稳定版的Nginx:
wget http://nginx.org/download/nginx-1.10.2.tar.gz
下载到/usr/local目录下

tar –zxvf nginx-1.10.2.tar.gz

进入nginx 文件夹目录输入以下命令:

./configure --prefix=/usr/local/nginx1.10 --with-http_stub_status_module --with-http_ssl_module

(后面两项是nginx缺少http_ssl_module模块,配置ssl后nginx启动失败,提示一下错误:nginx: [emerg] the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf)
–prefix=PATH : 指定nginx的安装目录。默认 /usr/local/nginx
–with-http_ssl_module : 使用https协议模块。默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装
–with-http_stub_status_module : 用来监控 Nginx 的当前状态
配置后输入以下命令:

make && make install

安装后启动项目:进入sbin目录
启动:./nginx
关闭:./nginx –s stop
考虑到安装let’s Encrypt需要占用80端口,可以先关闭Nginx
二、 如果已经安装过nginx,但是未配置ngx_http_ssl_module模块
需要重新配置:

./configure --prefix=/usr/local/nginx1.10 --with-http_stub_status_module --with-http_ssl_module

配置完成后,需要安装make,不用运行make install(会被覆盖安装)
将之前安装的nginx备份
cp nginx nginx.bak
停止nginx
将重新编译完成的nginx覆盖原有的nginx

cp ./objs/nginx /usr/local/nginx1.10/sbin/

然后启动重新查看是否添加成功

/usr/local/nginx1.10/sbin/nginx -V

三、 配置Let‘s Encrypt
系统要求:官方文档上已经写出支持python2.6或2.7的操作系统上,python3.x有望在未来支持;需要使用Root账户安装,有写入文件/etc/letsencrypt, /var/log/letsencrypt, /var/lib/letsencrypt的权限,安装时需要使用80和443端口
首先安装git 和bc ,并从github上将代码克隆到本地

sudo yum –y git bcsudo git clone https://github.com/certbot/certbot /opt/certbot-master

安装所有依赖:

sudo /opt/certbot-master/letsencrypt-auto --help

(安装过程请耐心等待)
绑定域名使用 standalone 的方式来获取证书。这种方式需要把 Nginx 服务停掉,让 standalone 服务器直接占用 80 端口来等待 Let’s Encrypt 服务端的验证。

sudo /opt/certbot-master/letsencrypt-auto --help –standalone –email 邮箱地址(邮箱地址是用来接收紧急通知和找回密钥的) –d 域名

中间会出现界面验证你的邮箱地址是否有效
命令完成后,最新版本的证书位置:/etc/letsencrypt/live/域名/
每个域名一个目录,有以下文件:
域名下文件
cert.pem 申请的服务器证书文件
privkey.pem 服务器证书对应的私钥
chain.pem 除服务器证书外,浏览器解析所需的其他全部证书,比如根证书和中间证书
fullchain.pem 包含服务器证书的全部证书链文件

配置nginx,需要生成dhparam.pem文件

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

修改nginx.conf文件

  1. 修改80端口的监听
server    {        listen 80;        return 301 https://域名$request_uri;        server_name 域名 域名;    }
  1. 增加以下代码
server {        listen 443 ssl;        server_name 域名;        ssl_certificate /etc/letsencrypt/live/域名/fullchain.pem;        ssl_certificate_key /etc/letsencrypt/live/域名/privkey.pem;        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;        ssl_prefer_server_ciphers on;        ssl_dhparam /etc/ssl/certs/dhparam.pem;        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';        ssl_session_timeout 1d;        ssl_session_cache shared:SSL:50m;        ssl_stapling on;        ssl_stapling_verify on;        add_header Strict-Transport-Security max-age=15768000;        # The rest of your server block        root /path/to/root;        index index.html index.htm;        location / {                try_files $uri $uri/ =404;        }}

配置完成后重启nginx
在谷歌浏览器中输入域名,谷歌浏览器查看详情
谷歌图片
或者通过此网址查询:https://www.ssllabs.com/ssltest/analyze.html?d=域名
这里写图片描述
自动续期问题:(注意关闭nginx)输入
./letsencrypt-auto renew 手动续期会发现提示还未到期,无法续期
可以使用

./letsencrypt-auto renew --force-renewal

强制更新续期
成功提示
这样的话就显示续期成功
可以写一个脚本,创建个定时任务,定期自动续期。

0 0
原创粉丝点击