精华内容
下载资源
问答
  • acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书
  • 使用lets encrypt 生成免费的证书

    千次阅读 2019-03-17 15:55:12
    acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书. 主要步骤: 安装 acme.sh 生成证书 copy 证书到 nginx/apache 或者其他服务 更新证书 更新 acme.sh 出错怎么办, 如何调试 下面详细介绍. 安装 acme....

    说明
    Mr.L edited this page on 23 Oct 2018 · 21 revisions
    acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.

    主要步骤:

    安装 acme.sh
    在这里插入图片描述
    生成证书
    copy 证书到 nginx/apache 或者其他服务
    更新证书
    更新 acme.sh
    出错怎么办, 如何调试
    下面详细介绍.

    1. 安装 acme.sh
      安装很简单, 一个命令:

    curl https://get.acme.sh | sh
    普通用户和 root 用户都可以安装使用. 安装过程进行了以下几步:

    把 acme.sh 安装到你的 home 目录下:
    ~/.acme.sh/

    并创建 一个 bash 的 alias, 方便你的使用: alias acme.sh=~/.acme.sh/acme.sh

    2). 自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.

    更高级的安装选项请参考: https://github.com/Neilpang/acme.sh/wiki/How-to-install

    安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中: ~/.acme.sh/

    1. 生成证书
      acme.sh 实现了 acme 协议支持的所有验证协议. 一般有两种方式验证: http 和 dns 验证.

    2. http 方式需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证. 然后就可以生成证书了.
      acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/
      只需要指定域名, 并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用.

    如果你用的 apache服务器, acme.sh 还可以智能的从 apache的配置中自动完成验证, 你不需要指定网站根目录:

    acme.sh --issue -d mydomain.com --apache
    如果你用的 nginx服务器, 或者反代, acme.sh 还可以智能的从 nginx的配置中自动完成验证, 你不需要指定网站根目录:

    acme.sh --issue -d mydomain.com --nginx
    注意, 无论是 apache 还是 nginx 模式, acme.sh在完成验证之后, 会恢复到之前的状态, 都不会私自更改你本身的配置. 好处是你不用担心配置被搞坏, 也有一个缺点, 你需要自己配置 ssl 的配置, 否则只能成功生成证书, 你的网站还是无法访问https. 但是为了安全, 你还是自己手动改配置吧.

    如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 acme.sh 还能假装自己是一个webserver, 临时听在80 端口, 完成验证:

    acme.sh --issue -d mydomain.com --standalone
    更高级的用法请参考: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert

    1. dns 方式, 在域名上添加一条 txt 解析记录, 验证域名所有权.
      这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证. 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

    acme.sh --issue --dns -d mydomain.com
    然后, acme.sh 会生成相应的解析记录显示出来, 你只需要在你的域名管理面板中添加这条 txt 记录即可.

    等待解析完成之后, 重新生成证书:

    acme.sh --renew -d mydomain.com
    注意第二次这里用的是 --renew

    dns 方式的真正强大之处在于可以使用域名解析商提供的 api 自动添加 txt 记录完成验证.

    acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成.

    以 dnspod 为例, 你需要先登录到 dnspod 账号, 生成你的 api id 和 api key, 都是免费的. 然后:

    export DP_Id=“1234”

    export DP_Key=“sADDsdasdgdsf”

    acme.sh --issue --dns dns_dp -d aa.com -d www.aa.com

    证书就会自动生成了. 这里给出的 api id 和 api key 会被自动记录下来, 将来你在使用 dnspod api 的时候, 就不需要再次指定了. 直接生成就好了:

    acme.sh --issue -d mydomain2.com --dns dns_dp
    更详细的 api 用法: https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md

    1. copy/安装 证书
      前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.

    注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.

    正确的使用方法是使用 --installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:

    acme.sh --installcert -d .com
    –key-file /etc/nginx/ssl/.key
    –fullchain-file /etc/nginx/ssl/fullchain.cer
    –reloadcmd “service nginx force-reload”
    (一个小提醒, 这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload)

    Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误。

    –installcert命令可以携带很多参数, 来指定目标文件. 并且可以指定 reloadcmd, 当证书更新以后, reloadcmd会被自动调用,让服务器生效.

    详细参数请参考: https://github.com/Neilpang/acme.sh#3-install-the-issued-cert-to-apachenginx-etc

    值得注意的是, 这里指定的所有参数都会被自动记录下来, 并在将来证书自动更新以后, 被再次自动调用.

    1. 更新证书
      目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心.

    2. 更新 acme.sh
      目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.

    升级 acme.sh 到最新版 :

    acme.sh --upgrade
    如果你不想手动升级, 可以开启自动升级:

    acme.sh --upgrade --auto-upgrade
    之后, acme.sh 就会自动保持更新了.

    你也可以随时关闭自动更新:

    acme.sh --upgrade --auto-upgrade 0
    6. 出错怎么办:
    如果出错, 请添加 debug log:

    acme.sh --issue … --debug
    或者:

    acme.sh --issue … --debug 2
    请参考: https://github.com/Neilpang/acme.sh/wiki/How-to-debug-acme.sh

    最后, 本文并非完全的使用说明, 还有很多高级的功能, 更高级的用法请参看其他 wiki 页面.

    https://github.com/Neilpang/acme.sh/wiki

    注意:文章来源于https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E

    注:本人安装到/home/目录 ,故 alias acme.sh=/home/acme.sh/acme.sh
    在这里插入图片描述

    注意:生成的证书在IOS设备上存在被墙的问题,导致首次打开链接耗费时间7秒以上,正式环境建议使用阿里云免费证书

    展开全文
  • 在工作中,nginx必不可少,另一个就是https配置,如何生成免费的ssl证书,并且在不重启nginx的情况下使用letsencrypt生成和更新证书呢?下边分两部分记录我的操作过程 使用token方式验证证书,好处是不需要单独...

    1:使用docker启动的nginx,如何使用letsencrypt整成ssl证书

    在工作中,nginx必不可少,另一个就是https配置,如何生成免费的ssl证书,并且在不重启nginx的情况下使用letsencrypt生成和更新证书呢?下边分两部分记录我的操作过程

    使用token方式验证证书,好处是不需要单独占用80端口,不需要停止nginx,但是相应的,需要再server中配置访问,才能进行验证

    文中使用的docker镜像:certbot/certbot

    文中有什么不对的地方,随时评论,我进行完善。

    2:使用docker letsencrypt生成证书,单独启动80端口验证的方式

    此方式会启动一个web服务,占用80端口,并且your_domain能在外网访问到这个服务,好处是不需要其他的支持,只要没有占用80端口即可

    docker run --rm -p 80:80 -p 443:443 -v /etc/letsencrypt/:/etc/letsencrypt/ certbot/certbot auth --standalone -m your_email --agree-tos -d your_domain
    

    your_email:通知邮箱
    your_domain:要生成ssl证书的域名,需要域名已经解析,并且外网能通过此域名访问到当前服务器的80端口
    –standalone 启动一个web服务,以供letsencrypt验证

    3:使用docker letsencrypt生成证书,使用token验证方式

    此方式验证域名,不需要单独启动web服务,会在本地生成一个token,保存在本地文件,需要通过占用80端口的服务进行映射,使letsencrypt服务器能正常访问到这个token文件,即可验证成功

    docker run --rm -it -v /etc/letsencrypt:/etc/letsencrypt certbot/certbot certonly --webroot --email your_email --agree-tos --no-eff-email --webroot-path=/etc/letsencrypt -d your_domain
    

    -v /etc/letsencrypt:/etc/letsencrypt:(本地路径:容器内路径)将容器内部的路径映射到本地路径,以供其他服务访问
    your_email:通知邮箱
    your_domain:要生成ssl证书的域名,需要域名已经解析,并且外网能通过此域名访问到当前服务器的80端口
    其他参数含义请自行百度

    对应nginx的docker-compose.yml配置

    version: '3'
    services:
      nginx:
        image: nginx
        container_name: nginx
        volumes:
          - /etc/letsencrypt:/etc/letsencrypt
          - ./conf.d:/etc/nginx/conf.d
          - ./html:/html:ro
        ports:
          - 80:80
          - 443:443
        environment:
          - TZ=Asia/Shanghai
    

    /etc/letsencrypt:/etc/letsencrypt:将letsencrypt生成的证书文件,映射到docker容器内部

    server配置

    server {
        listen       80;
        server_name  your_domain;
        listen       443 ssl;
        ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
        # 用于letsencrypt的证书认证。高优先级。所有需要ssl的server都需要添加次配置
        location ~ /.well-known/acme-challenge {
            allow all;
            root /etc/letsencrypt;
        }
    }
    

    your_domain:要生成ssl证书的域名,需要改成自己的域名
    首次生成证书,需要将ssl_certificate和ssl_certificate_key注释,因为没有这个文件,nginx无法启动
    存在证书文件后,后续即可正常访问和使用

    更新证书

    证书的有效期为90天,那么就意味着我们需要再90天内更新证书,证书更新时letsencrypt会验证当前证书是不是超过60天,如果没有,则不进行更新,如果超过了,则更新证书。
    也可以强制更新并重置正式的时间

    docker run --rm -v /etc/letsencrypt:/etc/letsencrypt certbot/certbot renew --webroot -w /etc/letsencrypt --force-renewal
    

    –force-renewal:强制更新证书,不添加为正常更新
    此方法使用token验证方式
    更新完成后,在/etc/letsencrypt/archive/your_domain/下看看是不是多了文件
    在这里插入图片描述

    最后别忘了更新一下nginx:docker kill --signal=HUP 容器名称

    展开全文
  • 官网 https://letsencrypt.org/ 官网咱们打开了

    官网
    https://letsencrypt.org/
    官网咱们打开了?咱也不会呀,也不敢问啊。。。。

    开始步入正题,这个才是真办法
    https://www.vpser.net/build/letsencrypt-certbot.html

    还有这个,简单点的文章
    文章中的【一、申请条件】请忽略,直接从第三点开始看
    https://www.jianshu.com/p/6f55323c3f58

    展开全文
  • 使用letsencrypt-certbot生成免费证书

    千次阅读 2020-05-07 19:06:50
    当执行成功后会在/etc/letsencrypt生成相关临时文件和证书文件; /etc/letsencrypt/live/yourdomain.com/fullchain.pem 为证书文件; /etc/letsencrypt/live/yourdomain.com/privkey.pem 为证书的私钥; 为了应用能...

    背景

    • 证书可用在https,wss等需要tls加密认证的场景;
    • 正式使用的环境一般都会使用收费的证书,但测试服或自己实验环境大部分都用自签名或免费的证书;
    • webrtc相关的模块标准要求必须加密且不能是自签名证书;

    先决条件

    从背景上来看我们得想想办法来薅一薅羊毛了,但为了安全性也还是有一些准入门槛的,如下:

    • 得下载一份 certbot-auto 脚本;
    • 得有服务器的登录ssh权限;
    • 第一次安装时得有root权限可以将脚本加入sudo list;
    • 服务器必须有可用的域名已经预先解析到了本机上且能ping通,地址为本服务器的公网地址;
    • 服务器上的80或443端口是空闲的如果外围有防火墙需要在防火墙上开放了公网的相应端口;
    • 脚本在执行时为了校验域名被解析的主机就是你所操作的主机所以会自动开启443端口进行现场认证, 防止绑定了非法域名,还有一个注意的点就是它只能提供具体域名无法对范域名进行绑定证书;

    获取证书

    1. 先下载可执行脚本: 详见: <wget https://dl.eff.org/certbot-auto> ;
    2. 放到自己的一个固定的目录如:/home/yine/scripts, 然后添加可执行权限: chmod a+x /home/yine/scripts/certbot-auto;
    3. sudo -iu root 切换到root权限添加脚本到sudo列表中去,以方便后续普通用户的证书自动更新操作;
    4. 添加sudo列表: echo 'popo ALL = NOPASSWD: ...(其它已有指令), /home/yine/scripts/certbot-auto' > /etc/sudoers.d/yine;
    5. sudo -iu yine 切换到普通用户;
    6. sudo /home/yine/scripts/certbot-auto certonly --standalone -d yourdomain.com --agree-tos --email youremail@gmail.com;
    7. 当执行成功后会在/etc/letsencrypt下生成相关临时文件和证书文件;
    8. /etc/letsencrypt/live/yourdomain.com/fullchain.pem 为证书文件;
    9. /etc/letsencrypt/live/yourdomain.com/privkey.pem 为证书的私钥;
    10. 为了应用能直接访问可以修改/etc/letsencrypt目录归属和权限 chown -R yine:studio /etc/letsencrypt chmod -R 744 /etc/letsencrypt;

    配置应用使用

    1. nginx
      server {
            listen 80;
            server_name abc.com;
            rewrite ^(.*) https://abc.com permanent;
    }
    server{
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
    
        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
    
        server_name www.yourdomain.com;
        root /web/yourdomain.com/;
    }
    
    1. kamailio 在 /etc/kamailio/tls.cfg
    private_key = /etc/letsencrypt/live/yourdomain.com/privkey.pem
    certificate = /etc/letsencrypt/live/yourdomain.com/fullchain.pem
    

    配置自动更新

    1. 在 /home/yine/scripts 下新建脚本 corn-cerbot-auto.sh
    2. 添加:
    #!/bin/bash
    sudo /home/popo/scripts/certbot-auto renew --quiet
    sudo /etc/init.d/kamailio force-reload
    
    1. 在计划任务中添加(crontab -e): 0 4 1 */2 * /home/yine/scripts/corn-cerbot-auto.sh #每两个月的一号凌晨4点更新一次

    新建复制脚本

    1. vim corn-cerbot-auto.sh
    2. 脚本如下:
    #!/bin/bash
    
    sudo /home/popo/scripts/certbot-auto renew
    
    HOME_DIR=/etc/letsencrypt/live
    DOMAIN_DIR=xxx.com
    
    DEST_DIR=/home/popo/DATA/etc/kamailio/certs/xxx.com
    
    cd $HOME_DIR/$DOMAIN_DIR
    
    REAL_PRIVKEY=`readlink $HOME_DIR/$DOMAIN_DIR/privkey.pem`
    rm -rf $DEST_DIR/privkey.pem
    cp -r $REAL_PRIVKEY $DEST_DIR/privkey.pem
    chmod 777 $DEST_DIR/privkey.pem
    
    REAL_FULLCHAIN=`readlink $HOME_DIR/$DOMAIN_DIR/fullchain.pem`
    rm -rf $DEST_DIR/fullchain.pem
    cp -r $REAL_FULLCHAIN $DEST_DIR/fullchain.pem
    chmod 777 $DEST_DIR/fullchain.pem
    
    sudo docker stop kamailio
    sleep 3s
    sudo docker start kamailio
    

    其它生成方式

    展开全文
  • Let’s EncryptLet's Encrypt是由EFF、Mozilla、Cisco、Akamai、IdenTrust与密西根大学研究人员共同创立的免费的凭证中心,目的在于推动全球所有的网站都使用HTTPS加密传输,创建一个更安全、更具...生成证书 我...
  • linuxserver/letsencrypt 1 使用 2 参数 二 实践 使用http方式验证 使用dns方式验证 第一步 完成域名服务器配置 第二步 完成域名服务器API-KEY相关配置并启动 一 官方介绍 linuxserv...
  • ./letsencrypt.sh letsencrypt.conf Generate CSR...domain.csr 查看脚本,38行是刚才提示的信息 38 echo "Generate CSR...$DOMAIN_CSR" 39 40 OPENSSL_CONF="/etc/ssl/openssl.cnf" 41 42 if [ ! -f "$OPEN...
  • letsencrypt 生成 SSL 证书 事先配置好访问域名解析 在nginx 对应虚拟主机添加一个验证区域: 配置 nginx server { listen 80; ... location ~ /.well-known { root /data/web; # 目录存在即可 allow all; }...
  • docker-letsencrypt-cron 使用letencrypt free证书颁发机构及其客户端certbot创建并自动续订网站SSL证书。 此图像将每2个月更新一次证书,并将最新的证书放入容器的/ certs文件夹中以及主机的./certs文件夹中。 ...
  • 这边主要介绍一些怎么生成免费证书。 前提条件: 需要支持DNS服务 基础的wget/curl 需要支持 具体步骤: 1. 下载并安装acme wget -O - https://get.acme.sh | sh 输出类似如下信息: --2020-11-06 21:41:48-- ...
  • gitlab-letsencrypt, 轻松生成GitLab页面的加密证书 letsencrypt 为了生成一个 ,我们可以通过命令行工具来加密电子邮件,以便与GitLab的页面一起使用。安装npm install -g gitlab-letsencrypt用法要避免被拒绝,请...
  • 使用letsencrypt生成pem证书 https://certbot.eff.org/lets-encrypt/centosrhel7-apache 生成p12证书 openssl pkcs12 -export -inkey private.key -in a.pem -name tomcat -out tomcat.p12 生成jks证书 keytool -...
  • 我在CentOS服务器上统一使用Letsencrypt来管理(创建和更新)网站的https证书。 我使用的是阿里云的服务器,首次使用Letsencrypt创建https证书时一切正常,当证书到期后,使用renew命令无法更新证书;,具体如下: ...
  • letsencrypt-nginx-proxy-companion是nginx-proxy的轻量级伴侣容器。 它处理用于代理Docker容器的Let's Encrypt证书的自动创建,更新和使用。 请注意,letsencrypt-ngiletsencrypt-nginx-proxy-companion是nginx-...
  • LetsEncrypt.Client (.Net标准库-作为) LetsEncrypt.ConsoleApp (.Net核心控制台应用程序) LetsEncrypt.Client LetsEncrypt.Client是用于证书的客户端的简单,直接的C#实现。 库基于.NET Standard 2.1+ 。 ...
  • 自动Letsencrypt 贡献者: 标签: letsencrypt,证书至少需要: 4.5 经测试至: 4.8.1 稳定标签: 1.0.1 许可: GPLv2 许可URI: : 自动将新域添加到主域的现有SSL证书中 描述 自动从certbot生成的现有SSL证书中...
  • 给大家介绍了windows下部署免费ssl证书(letsencrypt)的方法,非常不错,具有参考借鉴价值,需要的朋友参考下
  • 本篇,我们介绍基于 acme.sh从Letsencrypt生成免费的泛域名证书 环境 linux服务器,操作系统为 centos7.2 nginx 1.10.1 acme.sh v2.8.0 一、安装acme.sh # 安装依赖环境 yum -y install curl cron socat # 下载并...
  • 如果letsencrypt 生成证书或者更新证书时报如下错误: Failed authorization procedure. xxx.com (http-01): urn:acme:error:connection :: The server could not connect to the client to verify the do...
  • jekyll-gitlab-letsencrypt 这个插件自动为您的gitlab托管的jekyll博客完成了letencrypt的整个过程! (自动)它将您的电子邮件注册到letencrypt服务器 (自动)它将生成一个质询文件,并直接通过gitlab API提交 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,451
精华内容 980
关键字:

letsencrypt生成