欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

申请 SSL 证书,确保可使用 HTTPS 访问域名

最编程 2024-03-19 12:38:53
...

Acme 脚本申请证书

一、环境安装(Debian/Ubuntu或CentOS)

1.Debian/Ubuntu命令

apt update -y
apt install -y curl
apt install -y socat

2.CentOS命令

yum update -y
yum install -y curl
yum install -y socat

二、安装 Acme 脚本

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

xxx@xxx.com 填写自己的邮箱

~/.acme.sh/acme.sh --register-account -m xxx@xxx.com

三、验证申请

下面代码中的 xxx.com 均为自己申请并解析过的域名

(复制的时候,别忘记改成自己的!!!!!!!!)

下面验证申请 我在这里使用的 方式1

方式1:监听80 端口验证(已测试)

执行下面这条命令前,保证80端口没有被占用(例如nginx),Acme.sh伪装成 WebServer,临时监听在 80 端口,进行验证。验证完后,80端口会自动再次空闲出来。

注意:一定要把80端口空闲出来,有nginx的 先把nginx关了 (pkill -9 nginx)

~/.acme.sh/acme.sh --issue -d www.xxx.com --standalone

方式2:Nginx方式验证

执行下面这条命令前,保证Nginx的配置文件已经配置好自己解析过的域名,并已启动Nginx

Nginx如何安装可以参考这个:Nginx在Linux下载安装及部署_学弟不想努力了-****博客

~/.acme.sh/acme.sh --issue -d www.xxx.com --nginx

方式3:HTTP方式验证

执行下面这条命令前,保证解析过域名能正常访问

原理:Acme 自动在你的网站根目录下放置一个文件,这个文件被互联网访问,来验证你的域名所有权,完成验证,然后生成证书

~/.acme.sh/acme.sh --issue -d xxx.com -d www.xxx.com  --webroot  /home/cert/

四、安装证书到指定文件夹

生成的证书+秘钥 都默认在Acme的安装目录下的:~/.acme.sh/

不要直接使用证书+秘钥,先把证书+秘钥移动到其他位置

使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置

如下:将证书+秘钥,移动到 /root 目录下 

注意!!!

这个存放这俩文件的路径(/home/cert/private.key 和/home/cert/cert.crt ),可以换其他路径,文件也可以换成其他名字,但必须和Nginx配置中的一致!!

~/.acme.sh/acme.sh --installcert -d www.xxx.com --key-file /home/cert/private.key --fullchain-file /home/cert/cert.crt

五、更新 Acme 脚本

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

始终保持 Acme.sh 保持最新版本;

手动升级:

~/.acme.sh/acme.sh --upgrade

自动升级

~/.acme.sh/acme.sh --upgrade --auto-upgrade

关闭自动升级

~/.acme.sh/acme.sh --upgrade  --auto-upgrade  0

六、 Nginx配置SSL

保证Nginx已安装。并且已经安装SSL(http_gzip_static_module)模块,并能正常使用

server {
  listen 80;
  # 替换成自己的域名
  server_name xxx.com www.xxx.com;
  # 统一指向https协议
  rewrite ^(.*) https://$server_name$1 permanent;
}

server {
  # 服务器端口使用443,开启ssl, 这里ssl就是上面安装的ssl模块
  listen 443 ssl;
  # 域名,多个以空格分开,替换成自己的域名
  server_name  xxx.com www.xxx.com;

  # ssl证书地址
  # pem文件的路径,替换成自己的证书路径
  ssl_certificate /home/cert/cert.crt;
  # key文件的路径,替换成自己的秘钥路径
  ssl_certificate_key /home/cert/private.key;
	
  # ssl验证相关配置
  # 缓存有效期
  ssl_session_timeout 5m;
  # 加密算法
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  #安全链接可选的加密协议
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  #使用服务器端的首选算法
  ssl_prefer_server_ciphers on;

  location / {
    root   html;
    index  index.html index.htm;
  }
}

七、 自动更新SSL证书

证书目前会90天以后会自动更新,避免每次过期都需要手动去更新

为了节省效率,配置自动更新SSL证书有效期

八、 手动更新新SSL证书

命令依次如下,基本还是重复上面的步骤二、三、四

注意:

        1.如果监听80端口的方式,记得先把80服务杀死,再执行下面命令

        2.邮箱、域名、存放路径

~/.acme.sh/acme.sh --register-account -m xxx@xx.com

~/.acme.sh/acme.sh --issue -d www.xxx.com --standalone

~/.acme.sh/acme.sh --installcert -d www.xxx.com --key-file /home/cert/private.key --fullchain-file /home/cert/cert.crt

推荐阅读