浅谈泛域名:解析、证书、分发

  • 概述:本文主要介绍这些内容: DNS 泛域名解析SSL 泛域名证书申请CDN 泛域名加速(分发)。
  • 前置:本文中 DNS 服务商为 DNSPod ,SSL 证书由 Let’s Encrypt 颁发,CDN 则是使用 腾讯云 CDN
  • 环境:基础的操作环境:主机: CentOS 7.4 、服务器: Nginx 、其他:acme.sh
  • 附录:介绍 CentOS 的 Nginx 安装和配置。

目录


一、DNS 域名解析

谈及 DNS 解析,一般有这几点要素:主机记录记录类型线路类型记录值TTL

  • 主机记录(@, *,xxx 假设根域名: domain.com
主机记录解释解析后网址
@直接对主域名解析domain.com
*泛域名解析,匹配所有二级域名*.domain.com
www对二级域名为 www 的网址解析www.domain.com
xxx对二级域名为 xxx 的网址解析xxx.domain.com
  • 记录类型 (A,CNAME,TXT,NS,显性 URL ,隐性 URL

A 记录:解析到具体的 服务器 IP 地址CNAME :解析到另一域名(比如 CDN 的加速域名),通过另一域名获取服务器 IP 地址

显性 URL 则是使用 301 跳转 重定向 域名,而 隐性URL 本质上只是一个 嵌套 iframe (一个是 DNS 服务器做重定向,一个是 DNS 服务器套一个网页)。NS 则是用来换 DNS 服务商时使用。

DNS 域名解析 - 记录类型

二、SSL 泛域名证书申请

支持 免费 泛域名证书申请的只有 Let’s Encrypt 了。

有兴趣可以去其官网看看,每次申请可以获取三个月证书时间,所以此处借助工具:acme.sh

安装方法也非常简单,见其中文帮助文档:acme.sh-说明 ,在本文中简单的记录一下:

(1)安装 acme.sh

1
2
curl https://get.acme.sh | sh
alias acme.sh=~/.acme.sh/acme.sh

(2)生成证书:DNS 方式

需要先登录 dnspod 获取 API 的 ID 和 Key 。

1
2
3
export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
acme.sh --issue --dns dns_dp -d domain.com -d *.domain.com

(3)安装证书

1
2
3
4
acme.sh --installcert -d domain.com \
--key-file /etc/pki/nginx/domain.key \
--fullchain-file /etc/pki/nginx/fullchain.cer \
--reloadcmd "service nginx force-reload"

(4)更新证书

目前证书在 60 天以后会自动更新, 你无需任何操作。

(5)自动更新 acme.sh

1
acme.sh  --upgrade  --auto-upgrade

三、CDN 泛域名分发

这里使用的是腾讯云的 CDN (阿里云也是可以的),前置条件:备案 + 验证

申请泛域名分发

除了需要验证外,其余的添加方法与普通 CDN 域名加速的设置项均相同。但是有一点需要注意:

全站 Https,泛域名的 SSL 证书 必须要部署到 CDN 上,否则 CDN 会用腾讯云的证书然后就证书不符报错啦。

部署证书(可以不开强制跳转)

四、附录

(1)CentOS 配置 Nginx

1.安装 Nginx

1
yum install -y nginx

2.启动 Nginx

1
systemctl start nginx.service

3.设为开机自启

1
systemctl enable nginx.service

4.Nginx 配置信息

  • 网站文件存放默认目录:/usr/share/nginx/html
  • 网站默认站点配置文件:/etc/nginx/conf.d/default.conf
  • 自定义站点配置文件:/etc/nginx/conf.d/
  • 全局配置文件:/etc/nginx/nginx.conf

(2)Nginx 配置 Http 跳转 Https

均修改全局配置文件 nginx.conf

1.开启 443 监听

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name inkss.cn;
root /usr/share/nginx/html;
ssl_certificate "/etc/pki/nginx/fullchain.cer";
ssl_certificate_key "/etc/pki/nginx/inkss.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
...
}

2.Http 跳转 Https

在监听 80 的函数内添加 rewrite ^(.*)$ https://$host$1 permanent;

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  inkss.cn;
    root         /var/www/html;
    rewrite ^(.*)$ https://$host$1 permanent;
    ...
}

回到顶部 © Inkss