当前位置:首页 > 技术分享 > 正文内容

centos 配置Let's Encrypt 泛域名https证书

admin3年前 (2021-02-22)技术分享2192

前言

2018年1月份Letsencrypt可以申请泛域名证书,这让我们部署多域名、多站点https省了很多功夫,终于可以不用维护多个域名的https证书。笔者以acme.sh为例,手把手教你配置https证书~

本教程适用于centos 6.x的linux服务器

acme.sh

acme.sh是国人开发的基于ACME协议的shell脚本,有了它可以很方便的从Letsencrypt生成免费的证书

详细步骤

一: 安装acme.sh


curl  https://get.acme.sh | sh


执行上述命令后,会在/root文件夹下建立一个.acme.sh的目录,里面放置了一些运行需要的脚本;同时,会注册一个检验证书是否到期的crontab任务,当证书到期时会自动更新;另外,安装完重启终端后,可以在终端直接使用acme.sh别名进行操作

安装过程中可能会遇到curl errcode: 35的问题,这个时侯只需更新一下NSS(MNetwork Security Services 网络安全服务)即可,命令如下:


yum update nss


二:生成证书

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

http验证

http方式需要在你的网站根目录放置一个文件验证所有权,验证通过后就可以生成证书了。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
dns验证

dns有验证有两种途径,一种是手动解析域名,然后生成一个解析记录,给域名配置上一个txt记录就可以验证了,具体操作也可以参考上面提到的wiki,笔者曾尝试使用这种方法,不知道是姿势不对还是别的什么原因,没有任何返回任何值

dns验证的另一种途径是通过域名解析商提供的api来自动添加txt记录完成验证,目前支持dnspod、aliyun等数种域名解析商,笔者以dnspod为例进行操作

首先登陆dnspod控制台,找到用户中心 - 安全设置,新建一个API TOKEN,新建完不要关闭窗口,一会还要复制里面的id和key,然后在终端中输入:

export DP_Id="id" # 你刚才生成的Id
export DP_Key="token" # 你刚才生成的token
acme.sh --issue --dns dns_dp -d *.bitefu.net # dns_dp表示以dnspod解析,-d后面的为你的主域名



之后,你可以在/root/.acme.sh/你的域名下面看到生成的证书

Tips: *.bitefu.net 和 bitefu.net是两个不同的证书,所以需要申请两次

复制证书

不要将nginx配置文件里面的证书地址指向/root/.acme.sh/你的域名,因为里面的文件夹结构可能会变。需要将证书复制到别的位置


acme.sh --installcert -d  *.<domain> --key-file /home/ssl/*.<domain>.key --fullchain-file /home/ssl/fullchain.cer --reloadcmd "service nginx force-reload"

有时候用nginx -t检测会出现报错 改用域名.cer后成功

之后你就可以在/home/ssl/下面找到两个文件


注:在证书补全工具里面,直接输入域名,点击获取证书链:https://myssl.com/chain_download.html

默认生成是没有crt文件的,如果有小程序必须用crt 打开上网网址输入域名获取crt文件即可,用crt替换cer.


部署证书

修改nginx配置文件

server {
    listen 80;
    server_name blog.bitefu.net; # 你的域名
    rewrite ^(.*) https://$server_name$1 permanent; # 重定向80端口到443端口
}
server {
    server_name  blog.bitefu.net; # 你的域名
    listen 443 ssl;
    ssl_certificate /home/ssl/fullchain.cer; #证书位置
    ssl_certificate_key /home/ssl/*.bitefu.net.key;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        root   /home/nginx/; # index所在的位置
        index  index.html index.htm;
    }
}

重启nginx之后,访问你的网站,当你看到小绿锁出现就大功告成了

如果重启后仍然无法访问,则可能是防火墙没有开放443端口,开放即可

iptables --list # 列出防火墙端口
/sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT # 开放443端口
/etc/rc.d/init.d/iptables save # 保存

扫描二维码推送至手机访问。

版权声明:本文由小刚刚技术博客发布,如需转载请注明出处。

本文链接:https://blog.bitefu.net/post/128.html

分享给朋友:

相关文章

节假日api 负载均衡升级 增加阿里云服务器

以下是服务器的情况可根据自己的需求进行选择1.tool.bitefu.net 整合服务器到 新的阿里云服务器(配置更高),旧服务器已不再续费2.vip.bitefu.net增加一个阿里云虚拟主机 现在已经有三条dns负载均衡的解析...

[教程] WTG备份新方法——FFU镜像格式

[教程] WTG备份新方法——FFU镜像格式

FFU(Full Flash Update) 格式是一种基于扇区的磁盘镜像文件格式,默认使用快速哈夫曼压缩(Xpress-Huffman)算法压缩,在捕获和部署时会生成哈希表进行校验,并可以使用DISM修改捕获的镜像。FFU格式很适合WTG...

微软版Ghost Win10:FFU映像备份和还原

微软版Ghost Win10:FFU映像备份和还原

在日常的维护中,系统的备份和还原是大家经常需要操作的事情。虽然Windows 10已经提供很多的工具,如系统还原、WIM备份/还原,VHD备份等。不过这些工具大多是基于文件的备份/还原。我们以前经常的使用的Ghost则是基于扇区的备份/还原...

超高性比的斐讯盒子T1,刷第三方YYF固件机教程超级详细版

超高性比的斐讯盒子T1,刷第三方YYF固件机教程超级详细版

家里面买了斐讯盒子T1,必不可少的就是刷机,刷机一直爽,一直刷机一直爽,这样的快乐一般人体会不到。原来斐讯盒子N1,T1,还有斐讯K2P路由器也变成了性价比超高的东东,而且众多大神也带来了超多可玩性非常高的固件和破解。楼主今天扒到了相关超高...

2021可用的百度网盘高速下载方法分享

2021可用的百度网盘高速下载方法分享

最新可用方法https://blog.bitefu.net/post/163.html方法很简单就是利用网盘直链下载助手【网盘直链下载助手】是一款免费开源获取网盘文件真实下载地址的油猴脚本,基于PCSAPI,支持Windows,Mac,Li...

PHP AES加解密 (ECB模式/sha1prng算法/PKCS5Padding和PKCS7Padding补码) ECB 模式不需求设置 iv

php7+ 版本/**  * [AesSecurity aes加密,支持PHP7+]  * 算法模式:ECB  * 密钥长度:128  * 补...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。