# 域名与证书选择

## **域名与证书选择**

该篇内容对于学生来说是选做的，域名以及证书对于本课程的推进不是必要的。但如果用于实战中，那么这则会是必要的步骤。无论如何，让我们一起来了解一下怎么给VPS选择域名以及证书。

### **域名**

同VPS厂商一样，提供域名注册/购买的厂商也是繁多的，甚至一些厂商提供一条龙服务：VPS、域名、静态IP、证书。但在这里的话，我个人推荐在谷歌上购买域名。

地址：[Google Domains - Get a new domain](https://domains.google.com/registrar/search?hl=en-IN)

虽然域名的选择看似是可以根据个人喜好，但实则尽可能选择看起来有意义、合法有效的域名。相比 www.h4ck3r.com，www.centerbank.com 可能会是一个更好的选择。另外，一些黑客会使用与知名网站看起来类似的域名，比如 www.goog1e.com。虽然在有些时候，这样能骗过人眼从而提高钓鱼攻击的成功率，但企业的 DNS 过滤器则会屏蔽这些故意使用错字的域名。

比如，查找 raven-med.com 是否可用，这个域名还尚未被注册，并且一年只需要 12 美元的注册费。注册一个自己的域名，就是这么简单！

[![image.png](http://raven-medicine.com/uploads/images/gallery/2022-09/scaled-1680-/TADimage.png)](http://raven-medicine.com/uploads/images/gallery/2022-09/TADimage.png)

在 google 上购买了域名之后，可以在域名设置中配置 DNS，使得该域名与自己所持有的公网 IP 映射起来，这样大家就能通过好记的域名来访问你的 VPS 了，如果有公开服务的话。

[![image.png](http://raven-medicine.com/uploads/images/gallery/2022-09/scaled-1680-/Sfaimage.png)](http://raven-medicine.com/uploads/images/gallery/2022-09/Sfaimage.png)

### **证书**

无论是搭建个人网站，还是用于 C2 服务器，我们最好用 TLS/SSL 来加密通信以提高传输中安全，因此一个可信的证书是很有必要的。尽管可以使用自签名证书，但自签名证书在公网是不被信任的。因此，我们可以选择在 [Let's Encrypt](https://letsencrypt.org/) 上注册一个证书。LetsEncrypt 提供的证书是免费且相对可信的，这是个很好的选择。该网站会引导我们访问这个网站 [Certbot Instructions | Certbot (eff.org)](https://certbot.eff.org/instructions?ws=webproduct&os=ubuntufocal) ，我们跟着教程中的命令一步步执行，就可以有自己的证书了。涉及的命令如下：

```bash
root@web01:~# snap install core
core 16-2.58 from Canonical✓ installed
root@web01:~# snap refresh core
snap "core" has no updates available
root@web01:~# snap install --classic certbot
certbot 1.32.2 from Certbot Project (certbot-eff✓) installed
root@web01:~# ln -s /snap/bin/certbot /usr/bin/certbot
root@web01:~# certbot certonly -d raven-med.com --apache --register-unsafely-without-email --agree-to
```

[![image.png](http://raven-medicine.com/uploads/images/gallery/2022-09/scaled-1680-/8Ylimage.png)](http://raven-medicine.com/uploads/images/gallery/2022-09/8Ylimage.png)

但是在本课程中，我们不需要购买域名和证书。我们可以先通过 openssl 来生成密钥对，再生成一个证书签名请求 CSR。Common Name 字段需要是**公共 IP** 或者**域名**。我们会在稍后用到证书。

```bash
openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out public.crt -keyout private.key
```

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-10/scaled-1680-/l3CkSZdDyLNM2HkJ-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-10/l3CkSZdDyLNM2HkJ-image.png)

#### ***OPSEC Note***

因为 LetsEncrypt 证书免费且相对可信，因此攻击者也对此加以滥用。如果为了更高的可信度，建议申请收费的证书。