首页 > 解决方案 > 单个 laravel 安装,多个域,SSL 加密

问题描述

我正在 Laravel 中构建一个应用程序,它有一个可以服务多个域名的单一代码库,可以在 CMS 中添加一个新域,并且要使该新域正常工作所要做的就是让它的记录指向服务器。然后,CMS 本身将根据 request()->getHost() 显示该域的相应页面;功能。

该应用程序由 Laravel Forge 管理。

我的问题是关于 nginx 和 LetsEncrypt:我希望以这种方式添加的所有新域都通过 SSL 进行保护,是否需要手动添加每个新域以进行伪造,或者是否有某种方法可以在证书中允许通配符 TLD ? (如果是这样,这是否存在安全风险?)。

nginx 是否需要一些特定的配置才能使用通配符 TLD?

我的目标是避免额外的配置并使其自动化,只需将域名添加到后端即可。

谢谢!

标签: laravelnginxlets-encryptlaravel-forge

解决方案


请按照步骤操作。希望它对你有用。

1 - 第一个克隆来自 Github 的 Letsencrypt/Certbot 存储库

cd /opt
git clone https://github.com/certbot/certbot.git

2 - 现在进入新创建的目录并运行证书机器人

cd certbot
./letsencrypt-auto certonly --manual --preferred-challenges=dns --email mymail@gmail.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.mywebsite.com

3 - 现在 Certbot 将要求提供 DNS 记录,以检查您是否真的拥有该域的权限。

------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.mywebsite.com with the following value:

5GFgEqWd7AQrvHteRtfT5V-XXXXXXXXXXXXXX

Before continuing, verify the record is deployed.
------------------------------------------------------------------
Press Enter to Continue

4 - 将此 DNS TXT 记录添加到您的域并等待几秒钟后,按 Enter 并继续。

5 - 您的证书已准备就绪!

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/mywebsite.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/mywebsite.com/privkey.pem
   Your cert will expire on 2018-08-22. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

6 - 现在我们将我们的 fullchain.pem 和 privkey.pem 复制到我们的 Nginx 文件夹,并将其添加到我们的 Nginx 服务器配置中。例如;

server {
   listen 443 ssl;
   server_name test.mywebsite.com;
   ssl_certificate /etc/nginx/ssl/fullchain.pem;
   ssl_certificate_key /etc/nginx/ssl/privkey.pem;
   ssl_trusted_certificate /etc/nginx/ssl/fullchain.pem;
...

希望它会有所帮助。


推荐阅读