Let's Encrypt
可以免费申请DV证书,甚至可以免费申请通配符证书!
由于ECC
证书的诸多好处,Let's Encrypt
现在也支持申请ECC证书了。
申请ECC证书可以使用两种方式:
1、通过 acme.sh 自动化申请,非常方便
2、通过 Certbot 手工申请,可参考:
【增加一个简单的教程】
curl https://get.acme.sh | sh
cd ~/.acme.sh
export Ali_Key="<key>"
export Ali_Secret="<secret>"
## 1、这里直接以多域名和通配符证书为例,其它情况请看下文
## 2、通配符证书必须以DNS验证,请提前申请AccessKey ID和Secret
## 3、如 xinac.com 和 *.xinac.com 结合的情况可满足所有地方使用了
## 4、nginx 1.11版本后支持双证书,其他服务器请自行解决
# 创建目录
mkdir -p /etc/letsencrypt/acme.sh/xinac.com/rsa/
# 生成证书
./acme.sh --issue --dns dns_ali -d xinac.com -d '*.xinac.com'
# 安装证书到指定目录
./acme.sh --installcert -d xinac.com \
--key-file /etc/letsencrypt/acme.sh/xinac.com/rsa/privkey.pem \
--fullchain-file /etc/letsencrypt/acme.sh/xinac.com/rsa/fullchain.pem \
--cert-file /etc/letsencrypt/acme.sh/xinac.com/rsa/cert.pem \
--ca-file /etc/letsencrypt/acme.sh/xinac.com/rsa/chain.pem \
--reloadcmd "/etc/init.d/nginx restart"
# 创建目录
mkdir -p /etc/letsencrypt/acme.sh/xinac.com/ecc/
# 生成证书
./acme.sh --issue --keylength ec-256 --dns dns_ali -d xinac.com -d '*.xinac.com'
# 安装证书到指定目录
./acme.sh --installcert --ecc -d xinac.com \
--key-file /etc/letsencrypt/acme.sh/xinac.com/ecc/privkey.pem \
--fullchain-file /etc/letsencrypt/acme.sh/xinac.com/ecc/fullchain.pem \
--cert-file /etc/letsencrypt/acme.sh/xinac.com/ecc/cert.pem \
--ca-file /etc/letsencrypt/acme.sh/xinac.com/ecc/chain.pem \
--reloadcmd "/etc/init.d/nginx restart"
# 支持同时申请不同服务商的域名
# 如:xinac.cn 在阿里注册,xinac.net 在腾讯注册;可同时申请
# 每个域名都用 --dns 指定服务商即可
export Ali_Key="<key>"
export Ali_Secret="<secret>"
export DP_Id="<id>"
export DP_Key="<key>"
./acme.sh --issue \
--dns dns_ali -d xinac.cn --dns dns_ali -d '*.xinac.cn' \
--dns dns_dp -d xinac.net --dns dns_dp -d '*.xinac.net' \
--keylength ec-256
server {
listen 443 ssl http2;
server_name xinac.com *.xinac.com;
# ECC Cert
ssl_certificate /etc/letsencrypt/acme.sh/xinac.com/ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/acme.sh/xinac.com/ecc/privkey.pem;
# RSA Cert
ssl_certificate /etc/letsencrypt/acme.sh/xinac.com/rsa/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/acme.sh/xinac.com/rsa/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 30m;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
......
}
./acme.sh --install-cronjob
【以下为各种情况申请证书教程】
acme.sh
curl https://get.acme.sh | sh
安装的过程中,做了3件事:
acme.sh
到你的 HOME 目录($HOME):~/.acme.sh/
acme.sh=~/.acme.sh/acme.sh
0 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
查看帮助信息:
cd ~/.acme.sh
./acme.sh -h
单域名证书可使用文件验证域名的所有权,也可以使用DNS验证。
./acme.sh --issue -d example.com -w /home/wwwroot/example.com
-w /home/wwwroot/example.com
是你的web站点的root目录,确保有读写权限~/.acme.sh/example.com/
,可以使用安装命令复制到指定位置。通配符证书只能通过DNS验证域名所有权,支持手工验证和API自动验证。
./acme.sh --issue --dns -d blog.xinac.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
## 根据提示添加DNS解析,然后执行
./acme.sh --renew -d blog.xinac.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
## 目录需要先创建;--reloadcmd 是安装后执行的操作,可选,命令可修改
mkdir -p /etc/letsencrypt/acme.sh/xinac.com/rsa/
./acme.sh --installcert -d xinac.com \
--key-file /etc/letsencrypt/acme.sh/xinac.com/rsa/privkey.pem \
--fullchain-file /etc/letsencrypt/acme.sh/xinac.com/rsa/fullchain.pem \
--cert-file /etc/letsencrypt/acme.sh/xinac.com/rsa/cert.pem \
--ca-file /etc/letsencrypt/acme.sh/xinac.com/rsa/chain.pem \
--reloadcmd "/etc/init.d/nginx restart"
./acme.sh --issue --keylength ec-256 --dns -d blog.xinac.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
## 根据提示添加DNS解析,然后执行
./acme.sh --renew --ecc -d blog.xinac.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
## 目录需要先创建;--reloadcmd 是安装后执行的操作,可选,命令可修改
mkdir -p /etc/letsencrypt/acme.sh/xinac.com/ecc/
./acme.sh --installcert --ecc -d xinac.com \
--key-file /etc/letsencrypt/acme.sh/xinac.com/ecc/privkey.pem \
--fullchain-file /etc/letsencrypt/acme.sh/xinac.com/ecc/fullchain.pem \
--cert-file /etc/letsencrypt/acme.sh/xinac.com/ecc/cert.pem \
--ca-file /etc/letsencrypt/acme.sh/xinac.com/ecc/chain.pem \
--reloadcmd "/etc/init.d/nginx restart"
(1)安装后需要手工配置服务器的SSL,脚本不会自动修改。
(2)手工DNS验证的方式不能自动续期,一般用于测试
## 这里以阿里云为例,key和secret到官网自行申请
export Ali_Key="<key>"
export Ali_Secret="<secret>"
./acme.sh --issue --dns dns_ali -d xinac.com
## 目录需要先创建;--reloadcmd 是安装后执行的操作,可选,命令可修改
mkdir -p /etc/letsencrypt/acme.sh/xinac.com/rsa/
./acme.sh --installcert -d xinac.com \
--key-file /etc/letsencrypt/acme.sh/xinac.com/rsa/privkey.pem \
--fullchain-file /etc/letsencrypt/acme.sh/xinac.com/rsa/fullchain.pem \
--cert-file /etc/letsencrypt/acme.sh/xinac.com/rsa/cert.pem \
--ca-file /etc/letsencrypt/acme.sh/xinac.com/rsa/chain.pem \
--reloadcmd "/etc/init.d/nginx restart"
## 这里以阿里云为例,key和secret到官网自行申请
export Ali_Key="<key>"
export Ali_Secret="<secret>"
./acme.sh --issue --keylength ec-256 --dns dns_ali -d xinac.com
## 目录需要先创建;--reloadcmd 是安装后执行的操作,可选,命令可修改
mkdir -p /etc/letsencrypt/acme.sh/xinac.com/ecc/
./acme.sh --installcert --ecc -d xinac.com \
--key-file /etc/letsencrypt/acme.sh/xinac.com/ecc/privkey.pem \
--fullchain-file /etc/letsencrypt/acme.sh/xinac.com/ecc/fullchain.pem \
--cert-file /etc/letsencrypt/acme.sh/xinac.com/ecc/cert.pem \
--ca-file /etc/letsencrypt/acme.sh/xinac.com/ecc/chain.pem \
--reloadcmd "/etc/init.d/nginx restart"
(1)安装后需要手工配置服务器的SSL,脚本不会自动修改
(2)使用API的方式可以自动化续期
## RSA
./acme.sh --issue --dns dns_ali -d '*.xinac.com'
## ECC
./acme.sh --issue --keylength ec-256 --dns dns_ali -d '*.xinac.com'
## RSA
./acme.sh --issue --dns dns_ali -d xinac.com -d '*.xinac.com'
## ECC
./acme.sh --issue --keylength ec-256 --dns dns_ali -d xinac.com -d '*.xinac.com'
## RSA
./acme.sh --renew -d xinac.com --force
## ECC
./acme.sh --renew -d xinac.com --force --ecc
## RSA
./acme.sh --remove -d xinac.com
## ECC
./acme.sh --remove -d xinac.com --ecc
证书删除后仅不会在列表中显示,目录和文件不会被移除
./acme.sh --list
## 60天后自动续期
./acme.sh --install-cronjob
## 立即执行续期
./acme.sh --cron
续期操作会自动化执行:
1、签发新的证书
2、复制证书到指定位置(根据之前的命令)
3、重启服务(根据之前的命令)
以 nginx 为例:
1、Nginx在版本1.11以后(包括1.11)才支持部署双证书
2、证书如果配置不当是不会显示双证书的
3、双证书配置后,不会同时发送给客户端,根据客户端的支持自动选择
4、ssl_ciphers
属性要加上ECDHE-ECDSA-AES128-GCM-SHA256
并放在最前。此属性有其它的支持选项,可自行测试。
5、配置完成后重启服务。
6、此参数申请的证书为:ECDSA 256 bits
和RSA 2048 bits
,需要其它的可自行修改参数测试
server {
listen 443 ssl http2;
server_name www.xinac.com;
# ECC Cert
ssl_certificate /etc/letsencrypt/acme.sh/xinac.com/ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/acme.sh/xinac.com/ecc/privkey.pem;
# RSA Cert
ssl_certificate /etc/letsencrypt/acme.sh/xinac.com/rsa/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/acme.sh/xinac.com/rsa/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 30m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
......
}
配置成功后,查看证书详情,可以看到:
ECC公钥的值是 ECC(256Bits)
RSA的显示为 RSA(2048Bits)
Firefox打开网站,查看证书详细信息:
算法标识符:椭圆曲线公钥
算法参数:ANSI X9.62 椭圆曲线 prime256v1 (即 secp256r1, NIST P-256)
如果有以上效果,则ECC+RSA
双证书安装成功。
网站测试:https://myssl.com/
SSL和TLS最佳配置实践(SSL and TLS Deployment Best Practices)
使用 acme.sh + nginx 使用 RSA 和 ECC 双证书
本文由 新逸Cary 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://blog.xinac.cn/archives/letsencrypt申请rsaecc双证书流程支持通配符证书.html
最后更新:2020-07-07 14:38:06
Update your browser to view this website correctly. Update my browser now