nginx+apache配置ssl

在网上找了很多提供ssl证书的网站,配置起来都比较麻烦,因此使用Let’s Encrypt的免费证书,因为之前搭建服务器使用的是nginx+apache的结构,因此会把ssl配在nginx上。

首先需要在服务器上安装Let’s Encrypt客户端,安装方式如下:

sudo apt-get update
sudo apt-get -y install git bc
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

这样就把Let’s Encrypt下载到/opt/letsencrypt目录了,切换到/opt/letsencrypt目录下,安装依赖包:

cd /opt/letsencrypt
./certbot-auto -n

安装过程中可能会失败,可以多尝试几次
安装成功后执行如下命令生成证书:

./certbot-auto certonly --email youremail@email.com --agree-tos --no-eff-email --webroot -w /data/web/www -d www.agppp.cn

执行成功后会在/etc/letsencrypt/live/www.chen.net/目录下生成对应的证书,在nginx上进行证书配置,编辑nginx配置文件,添加如下内容:

server {
    listen 443;
    server_name www.agppp.cn;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/www.agppp.cn/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/www.agppp.cn/privkey.pem;
    ssl_trusted_certificate  /etc/letsencrypt/live/www.agppp.cn/chain.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
    ssl_prefer_server_ciphers on;
}

然后重启nginx,访问https://www.agppp.cn测试是否配置成功

重启nginx时提示失败,发现apache已经占用了443端口,修改apache的httpd-ssl.conf文件,将Listen 443注释掉,然后重启apache,启动apache的时候需要先把nginx关了。启动apache之后在启动nginx

由于Let’s Encrypt证书有效期为3个月,需要写一个定时任务更新证书,执行crontab -e
添加一条定时任务

* * * */1 * /opt/letsencrypt/certbot-auto renew --disable-hook-validation

没有具体去看letsencrypt的原理,具体可以参考一下https://www.jianshu.com/p/eaac0d082ba2
或者执行./certbot-auto然后按着提示一步步操作

http://blog.csdn.net/zstack_org/article/details/53883850
https://www.cnblogs.com/plongver/p/7844715.html

comments powered by Disqus
京ICP备16019137号-1