构建 SSL 证书监视器(检查有效日期)
构建 SSL 证书监视器:一个真实的 Node.js 项目
各位开发者们好!👋 今天我想分享一个实践项目,它在解决实际问题(监控 SSL 证书到期日期)的同时,让我学到了 Node.js 中的几个重要概念。
问题
如果您在服务器上使用 HTTPS 运行多个网站(您应该这样做!),则需要跟踪 SSL 证书的到期时间。虽然 Let's Encrypt 证书通过 certbot 自动续订,但拥有监控脚本可以让您高枕无忧,并有助于尽早发现任何续订问题。
关键学习点
const { X509Certificate } = require('crypto'); const fs = require('fs'); const certFile = fs.readFileSync('/path/to/cert/fullchain.pem'); const x509 = new X509Certificate(certFile); const expiryDate = new Date(x509.validTo);
// Don't do this ❌ const certPath = '/etc/letsencrypt/live/mysite.com/fullchain.pem';
// Do this instead ✅ require('dotenv').config(); const certPath = process.env.CERT_PATH;
请记住在你的 repo 中包含一个 .env.example 来帮助其他开发人员:
DOMAIN_1=example.com DOMAIN_1_CERT_PATH=/path/to/cert/fullchain.pem
if (daysUntilExpiry <= 7) { console.log('\x1b[31m%s\x1b[0m', 'CRITICAL: Certificate expires soon!'); }
项目结构提示
我希望早点知道以下这些事——组织小型公用事业项目:
ssl-checker/ ├── checkCertificateExpiry.js # Main script ├── .env # Private configuration ├── .env.example # Public example ├── .gitignore # Exclude sensitive files └── package.json # Dependencies and scripts
实际应用
该脚本在我的服务器上运行,监控两个域。
当证书需要更新时,非常简单:
sudo certbot certonly --nginx -d domain.com
关键要点🔑
安全第一:始终使用环境变量来存储敏感数据
错误处理:你的脚本应该能够妥善处理丢失的文件或无效的证书
用户体验:清晰、彩色的控制台输出使实用程序脚本更加专业
模块化:结构化代码,以便以后轻松添加更多域
下一步是什么?
您可以通过以下方式增强此项目:
添加证书到期的电子邮件通知
创建一个简单的 Web 仪表板
添加对非 Let's Encrypt 证书的支持
实现自动 Slack/Discord 通知
结论
构建这样的实用脚本是学习真实编程的好方法。你可以练习:
文件系统操作
密码学基础知识
环境配置
错误处理
用户友好的输出
您是否编写过类似的实用脚本?您会添加哪些功能?请在评论中告诉我!
完整代码源
buymeacoffee.com/techmobilebox/e/335174
记得关注我以获取更多实用的编码教程!🚀