免费SSL证书签发配置Https

一、阿里云免费证书

1.1登录阿里云控制台

登录后进入SSL证书管理(当前更名为:数字证书管理服务),点击SSL证书管理。点击个人测试证书。单用户每年只能购买一次,每年可申请20个证书。当前每年仅3个月有效期。降本。购买后如下:

免费SSL证书签发配置Https插图

1.2创建证书

免费SSL证书签发配置Https插图1

1.3 证书申请

免费SSL证书签发配置Https插图2
免费SSL证书签发配置Https插图3

1.4 配置DNS解析

1.5 修改nginx的配置文件

server {
     #HTTPS的默认访问端口443。
     #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
     listen 443 ssl;
     
     #填写证书绑定的域名
     server_name <yourdomain>;
 
     #填写证书文件绝对路径
     ssl_certificate cert/<cert-file-name>.pem;
     #填写证书私钥文件绝对路径
     ssl_certificate_key cert/<cert-file-name>.key;
 
     ssl_session_cache shared:SSL:1m;
     ssl_session_timeout 5m;
	 
     #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
     #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

     #表示优先使用服务端加密套件。默认开启
     ssl_prefer_server_ciphers on;
 
 
    location / {
           root html;
           index index.html index.htm;
    }
}

重启Nginx服务。访问

但是以上方式每3个月需要人工操作。麻烦,有其他自动化解决方案吗?

二、证书自动签发并自动解析阿里云DNS

2.1 创建阿里云子账号并开通权限

阿里云权限策略里边有一个“AliyunDNSFullAccess”,给子账号这个权限即可

创建完成后将AccessKey ID与Access Key Secret记下来备用。

2.2安装acme.sh

1)安装很简单,命令如下,把 acme.sh 安装到你的 home

shell>>cd ~
shell>>git clone https://github.com/acmesh-official/acme.sh.git
shell>>cd acme.sh
shell>>./acme.sh --install -m  my@example.com

强烈建议添加一条别名命令方便后边执行

shell>alias acme.sh=~/.acme.sh/acme.sh

2.3设置环境变量

将之前步骤中准备好的阿里云Accesskey填写到上面命令的中,并在终端中执行,执行后并不会有内容返回

export Ali_Key="yourAli_Key"
export Ali_Secret="yourAli_Secret"

2.4 证书签发

准备签发证书的命令,因为是签发,所以要使用“–issue”参数

shell>>./acme.sh --issue --dns dns_ali -d roadever.com.cn -d *.roadever.com.cn --cert-home /data/app/acme/cert
shell>>cd /data/app/acme/cert
免费SSL证书签发配置Https插图4
[root@iZgc71arx7ijywr94r79eoZ roadever.com.cn_ecc]# ls
ca.cer fullchain.cer roadever.com.cn.cer roadever.com.cn.conf roadever.com.cn.csr roadever.com.cn.csr.conf roadever.com.cn.key
免费SSL证书签发配置Https插图5

2.5 配置Nginx

将文件迁移至Nginx的cert,最后修改nginx配置文件如下:

此处因为多域名原因,将fullchain.cer命名为roadever.fullchain.cer

    server {
      #监听443端口
      listen 443 ssl;
      #对应的域名
      server_name roadever.com.cn www.roadever.com.cn;
      ssl_certificate cert/roadever.fullchain.cer;
      ssl_certificate_key cert/roadever.com.cn.key;
      ssl_session_timeout 5m;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      ssl_prefer_server_ciphers on;
      location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8081;
      }
      location ~ .*\.(js|css)$ {
        proxy_pass http://127.0.0.1:8081;
      }
    }