Fork me on GitHub

Linux生成TLS证书

安装acme.sh

证书的生成有许多方法,这里使用的是比较简单的方法:使用 acme.sh 脚本生成。

注意:针对debian9系统,在执行安装acme.sh脚本之前,需要提前安装必备软件包。不然会有提示"It is recommended to install socat first"等错误信息提示。

必备软件包安装执行命令:

apt-get update && apt-get install curl -y && apt-get install cron -y && apt-get install socat -y

CentOS用yum install socat安装必备软件包。

安装 acme.sh

执行以下命令:

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

安装成功后执行 以下命令,.bashrc需要用ls -a才能看到,以确保脚本所设置的命令别名生效:

source ~/.bashrc

执行成功后不会有回应,如果安装报错,那么可能是因为系统缺少 acme.sh 所需要的依赖项,acme.sh 的依赖项主要是 netcat(nc),我们通过以下命令来安装这些依赖项,然后重新安装一遍 acme.sh:(注:debian9在安装过程中没有报错,所以这步不需要执行)

apt-get -y install netcat

以下的命令会临时监听 80 端口,而80端口被Ngnix服务占用,所以要暂停Ngnix服务:

systemctl stop nginx 
###或者
/usr/local/nginx/sbin/nginx -s stop

生成证书

注意:脚本中的域名mydomain.me改成自己的

~/.acme.sh/acme.sh --issue -d mydomain.me --standalone -k ec-256

安装成功后提示生成的秘钥证书的路径,证书路径是自动生成的。

如果出现No valid IP addresses,说明这个域名未被使用,要先将域名绑定IP。

如果出现Create new order error. Le_OrderFinalize not found,则说明失败太多次,要一小时后再试。

Invalid response from说明域名绑定的并不是本机IP。

Error getting validation data,获取不到验证数据是因为防火墙没关。

安装证书和密钥(ECC和RSA二选一)

ECC优点:同等长度 ECC 比 RSA 更安全 ECC缺点:兼容性会差一些

只要设备不是非常老的老古董,建议使用 ECC 证书。

ECC 证书将证书和密钥安装到 /etc/crt 中执行:(注意:脚本中的域名改成自己的/etc/crt路径可以自己制定)

$ sudo ~/.acme.sh/acme.sh --installcert -d mydomain.me --fullchainpath /etc/crt/autumn.crt --keypath /etc/crt/autumn.key --ecc

RSA 证书执行:(/etc/crt路径可以自己制定

$ sudo ~/.acme.sh/acme.sh --installcert -d mydomain.me --fullchainpath /etc/crt/autumn.crt --keypath /etc/crt/autumn.key

注意:无论什么情况,密钥(即上面的.key)都不能泄漏,如果你不幸泄漏了密钥,可以使用 acme.sh 将原证书吊销,再生成新的证书,吊销方法请自行参考 acme.sh 的手册。

安装成功如下图:

证书更新(脚本自动)

由于 Let's Encrypt 的证书有效期只有 3 个月,因此需要 90 天至少要更新一次证书,acme.sh 脚本会每 60 天自动更新证书。所以这步不需要做。(但如果你不放心,也把手动更新的指令提供一下,供参考。)

手动更新 ECC 证书,执行:

~/.acme.sh/acme.sh --renew -d mydomain.com --force --ecc

如果是 RSA 证书则执行:

sudo ~/.acme.sh/acme.sh --renew -d mydomain.com --force
posted @ 2020-02-28 20:35  秋夜雨巷  阅读(4404)  评论(0编辑  收藏  举报