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