1.准备
前提一台服务器,一可用域名
2.下载certbot
具体certbot的介绍查看网址 https://certbot.eff.org/
我在实际开发中用的certbot-auto
可以在服务器通过已下命令下载 certbot-auto
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
3.配置nginx
修改你的服务器配置,在server模块添加:
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /usr/share/nginx/html;
}
注:
因为,CertBot在验证服务器域名的时候,会生成一个随机文件,然后CertBot的服务器会通过HTTP访问你的这个文件,因此要确保你的Nginx配置好,以便可以访问到这个文件。
location = /.well-known/acme-challenge/ {
return 404;
}
接着重新加载Nginx配置:
sudo service nginx reload
4.执行certbot-auto生成证书
certbot-auto certonly --webroot -w /usr/share/nginx/html/ -d www.test.com
注:在执行过程中会先去下载各种依赖的包构建环境。
已下是我在实际开发中总结的一些问题
1,这里需要python2.7以上版本,可以参考这篇文章 http://blog.csdn.net/jcjc918/article/details/11022345
2,如果是ReDHat的发行系统,在运行时可能会出现This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. 这是因为redhat 默认自带的 yum 源需要注册,才能更新。我们想不花钱也可以更新,需要替换掉redhat的yum源。可以参考这篇文章
http://blog.51cto.com/qingwang/1551228
3,其次在执行过程中他会去执行 python的virtualenv,具体可百度 安装可参考文章
http://www.jianshu.com/p/08c657bd34f1 我在安装成功后运行扔提示无法找到 virtualenv ,同时却在其安装包下找到了找到了 virtualenv.py文件。解决办法建立软连接 ln -s python2.7/site-packages/virtualenv.py /usr/local/bin/virtualenv 修改virtualenv.py的权限 chmod 740 virtualenv.py
5.执行成功提示签发成功
如果看到类似提示说明签发成功
相关文件会默认保存到/etc/letsencrypt/live/ 文件夹下
继续配置nginx
-
ssl_certificate /etc/letsencrypt/live/www.test.com/fullchain.pem;
-
ssl_certificate_key /etc/letsencrypt/live/www.test.com/privkey.pem;
-
ssl_trusted_certificate /etc/letsencrypt/live/www.test.com/chain.pem;
6. 定期续签命令
certbot-auto renew --dry-run
可创建crontab 任务来定期续签。