laravel - 单个 laravel 安装,多个域,SSL 加密
问题描述
我正在 Laravel 中构建一个应用程序,它有一个可以服务多个域名的单一代码库,可以在 CMS 中添加一个新域,并且要使该新域正常工作所要做的就是让它的记录指向服务器。然后,CMS 本身将根据 request()->getHost() 显示该域的相应页面;功能。
该应用程序由 Laravel Forge 管理。
我的问题是关于 nginx 和 LetsEncrypt:我希望以这种方式添加的所有新域都通过 SSL 进行保护,是否需要手动添加每个新域以进行伪造,或者是否有某种方法可以在证书中允许通配符 TLD ? (如果是这样,这是否存在安全风险?)。
nginx 是否需要一些特定的配置才能使用通配符 TLD?
我的目标是避免额外的配置并使其自动化,只需将域名添加到后端即可。
谢谢!
解决方案
请按照步骤操作。希望它对你有用。
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;
...
希望它会有所帮助。
推荐阅读
- laravel - Laravel whereIn 仅返回每个项目
- openssl - 是否可以在同一个项目中包含 PolarSSL 和 OpenSSL?
- mysql - Kubernetes - 有状态集 mysql - 它如何同步?
- sql - Liquibase用sql多行插入计算值
- javascript - 用字符串中的新数组替换旧数组
- java - 无法使用 cmd 在 java 9 中编译模块
- excel - 如何根据单元格值过滤 Excel 数据透视表?
- mongodb - 如何使用 ObjectID 指定 Mongodump 的日期范围
- javascript - 如何在 useState 字符串中使用 replace()?
- r - 如何在R中的重复字符串中选择最长的ngram?