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

本文主要介绍这些内容:
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 服务商时使用。

二、SSL 泛域名证书申请

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

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

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

(1)安装 acme.sh

curl https://gcore.jsdelivr.net/gh/Neilpang/acme.sh/acme.sh | INSTALLONLINE=1  sh

(2)生成证书:DNS 方式

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

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

(3)安装证书

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

acme.sh --upgrade --auto-upgrade

三、CDN 泛域名分发

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

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

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

四、附录

(1)CentOS 配置 Nginx

1.安装 Nginx

yum install -y nginx

2.启动 Nginx

systemctl start nginx.service

3.设为开机自启

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 监听

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;
...
}

评论