说明
证书,说白了就是加密http流量成为https加密流量的东西,从裸奔到铠甲合体。
一般证书分为信任机构或组织颁发的证书和自签名证书。
证书简单再分又有RSA和ECC加密格式
还有单域名回泛域名证书……
我们以acme.sh为例,申请一个泛域名证书
acme申请的证书后会自动创建一个crontab任务,每天检查证书有效期,到期会自动续签,所以申请和配置成功即完成
安装
1.具体安装方式可以查看其README,这里以在线安装为例
敲入curl https://get.acme.sh | sh -s email=my@example.com
即可,稍后创建/root/.acme/
文件夹,所有的操作步骤都在这里进行
2.设置域名服务商的DNS Keys(API Keys),如阿里云的Keys
具体其他域名服务商请看这里
3.得到Keys对后,输入如下,请注意替换,这里是阿里云为例!
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"
4.接下来就简单了,直接执行如下,这里也是注意替换!
cd /root/.acme/
./acme.sh --issue --dns dns_ali -d yourdomain.com -d *.yourdomain.com
5.大概两分钟左右即可完成证书申请,结果如下图
6.copy证书到nginx的证书目录,假设我们这里是/var/www/ssl/
,则我们输入如下命令,这里也是注意替换! ./acme.sh --install-cert -d yourdomain.com --cert-file /var/www/ssl/yourdomain.com.crt --key-file /var/www/ssl/yourdomain.com.pem --fullchain-file /var/www/ssl/yourdomain.com.fullchain.crt
7.证书会被copy到指定目录,这时候编辑nginx配置文件,如下一个二级域名的配置文件
server {
listen 80;
server_name release.yourdomain.com;
location / {
index index.html;
try_files $uri $uri/ /index.html;
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl;
root /var/www/html/release/;
index index.html index.htm index.nginx-debian.html;
server_name release.yourdomain.com;
ssl_certificate /var/www/ssl/yourdomain.com.fullchain.crt;
ssl_certificate_key /var/www/ssl/yourdomain.com.pem;
#enables all versions of TLS, but not SSLv2 or 3 which are weak and now deprecated.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#Disables all weak ciphers
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers on;
}
8.保存退出使用nginx -t
测试无误后重启nginx即可