国内域名没有备案通过之前,即使解析域名到服务器的IP也会很快被云服务商拦截,所以直接申请一张IP证书开启安全访问就变得很有必要。

zeroSSL 提供免费 SSL 证书是支持纯 IP 颁发的,记录 zeroSSL 免费的纯 IP SSL 证书申请以及如何在自己的服务器(Nginx)安装配置 zeroSSL 免费 SSL 证书。

一、ZeroSSL 证书申请

ZeroSLL官网

1.1、注册账号

进入到 ZeroSSL 官网,注册一个账号——点击免费 SSL 证书申请。——填写你的 IP 地址,然后选择免费 SSL 证书时长,90天。——选择自动生成 CSR。——验证域名 IP。

以上步骤不要选择需要付费的 PRO 计划即可。

1.2、验证域名

云主机的 IP 只有使用权,所以不能通过 DNS 方式验证,选择第二种 web 方式验证。

  • 按提示下载文件。

  • 按要求把文件放到指定文件夹,前面已经安装了 Nginx,所以我们直接在 Nginx 网站默认主页下创建即可。默认路径:/usr/share/nginx/html。

  • 上传完成之后先访问一下是否可以看到验证文件。

  • 最后,回到 ZeroSSL 验证页面,点击完成验证。

1.3、下载证书

ZeroSSL 证书验证成功后,就可以下载证书文件了。ZeroSSL SSL 证书提供了多种形式,包括了 Nginx、Apache 等。下载 Nginx 证书,下载下来的 ZeroSSL 证书文件有三个:ca_bundle.crt 和 certificate.crt 以及私钥 key。

二、配置Nginx-官网教程

2.1、使用 nginx -t 命令,可以看到nginx配置的默认地址:/etc/nginx/nginx.conf

1
nginx -t

2.2、在 nginx 文件夹下新建证书文件夹

1
cd /etc/nginx
1
mkdir cert && cd cert

使用 FTP 工具 Xftp 把刚才下载的密钥上传到 cert 文件夹。

2.3、合并 .crt 文件

1
cat certificate.crt ca_bundle.crt >> certificate.crt

2.4、Nginx.conf 配置

  • 进入 conf.d 文件夹
1
cd /etc/nginx/conf.d/
  • 新建 ip.conf 文件
1
touch ip.conf
  • 编辑 ip.conf 文件
1
vim /etc/nginx/conf.d/ip.conf
  • 写入下面的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
server {

listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;

server_name _; #你的服务器IP地址

#HTTP 重定向到 HTTPS
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }

#ssl on; ##官方文档这行必须关闭,否则会报错。
#nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/conf.d/ip.conf:12

#证书位置
ssl_certificate /etc/ssl/certificate.crt;
ssl_certificate_key /etc/ssl/private.key;

#证书配置
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #安全链接可选的加密协议
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; #加密算法
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
ssl_session_timeout 10m; #缓存有效期

#证书日志
access_log /var/log/nginx/nginx.ip.access.log;
error_log /var/log/nginx/nginx.ip.error.log;

#指定文件路径,这里没有搭建任何网站,默认文件已经指定了默认网页,不需再指定。
#location / {
#root /home/www/public_html/your.domain.com/public/;
#index index.html;
#}

}
  • 验证 nginx 配置
1
nginx -t
  • 重载 Nginx 配置
1
nginx -s reload

访问 ip 即可自动跳转 https