1、docker下载镜像
docker pull certbot/certbot
2、certbot 启动配置
docker run -it --rm --name certbot \
-v "/root/docker/certbot/ssl/:/etc/letsencrypt/" \
-v "/root/docker/nginx/www/:/var/www/html/" \
-v "/root/docker/certbot/letsencrypt/:/var/lib/letsencrypt" \
-v "/root/docker/certbot/log/:/var/log/letsencrypt" \
certbot/certbot certonly -n --no-eff-email --email demo@demo.com --agree-tos --webroot -w /var/www/html -d www.baidu.com
说明:
--rm 执行完成后便删除实例
/root/docker/certbot/ssl/ 生成证书等信息位置
/root/docker/nginx/www/ nginx的根页面地址 (这个位置 配置很重要,webroot 会请 求这个位置)
/root/docker/certbot/letsencrypt/ certbot执行生成的信息
/root/docker/certbot/log/ certbot执行生成的日志
--email demo@demo.com 配置自己的真实邮箱地址
--webroot -w /var/www/html 指向对应nginx的根页面地址
-d www.baidu.com 域名,多个域名可以多次写这个配置
3、执行生成后,证书在配置位置的live里
4、可能存在的问题:
原因:
域名下的 /.well-known/acme-challenge/NHz9-CH4W0RkSC2rH1BORGtdEdk9-43JM3dXiWd_U_o 这个路径,Let's Encrypt 服务器访问不到,所以需要配置一下 nginx/conf/nginx.conf 文件
在 nginx 的 nginx.conf 文件中写入以下配置
server {
listen 80;
server_name www.ok.com;
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /www;
}
location = /.well-known/acme-challenge/ {
return 404;
}
}