python - NET::ERR_CERT_COMMON_NAME_INVALID 使用 SendGrid 重置电子邮件时出错
问题描述
我有一个 Django 站点,它托管在 GCP App Engine 上,并使用 SendGrid 作为电子邮件主机。重置密码并单击以下电子邮件中的链接时,会引发后续错误:
您的连接不是私有的
NET::ERR_CERT_COMMON_NAME_INVALID
我已经研究了几个潜在的原因(最后链接),但一直未能找到解决方案。
password_reset_email.html
(仅显示 reset_link 块)
{% block reset_link %}
{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
{% endblock %}
settings.py
ALLOWED_HOSTS = ['*']
# Also tried with
#ALLOWED_HOSTS = ['*', 'website.com', 'www.website.com']
# HTTPS settings
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True
# HSTS settings
SECURE_HSTS_SECONDS = 31536000 # 1 year
SECURE_HSTS_PRELOAD = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
# Email backend settings (SendGrid)
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = 'some@email.com'
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'apikey'
EMAIL_HOST_PASSWORD = 'EMAIL_HOST_PASSWORD'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
我已经验证了域并标记了 SendGrid 上的链接,这些链接已经通过 Namecheap 上的 DNS 记录进行了验证。
当我在浏览器中查看证书时,它仍然指代*.sendgrid.net
。也许这可能是造成它的原因?我认为身份验证和链接品牌可以解决这个问题。我还尝试清空缓存并在私人窗口中打开链接。
任何帮助,将不胜感激。
编辑
原来它也与这个 SO question 有关。
解决方案
Twilio SendGrid 开发人员布道者在这里。
您需要启用SSL 点击跟踪,以便您的 CDN 可以使用您的域的有效证书将 SSL 内容转发到 SendGrid。
推荐阅读
- java - 即使变量的类在 java 项目中未导入/可见,在功能接口中访问变量也有效
- python - Pandas:如何使数据透视表保持原始行顺序?
- c++ - 在 cmake 中导出和打包预建库
- javascript - 在每个级别具有 var 变量的代码会产生意想不到的结果
- doit - Python doit 模块:如何选择运行任务操作的 shell?
- ruby-on-rails - Rails 全名方法,包含在 spans 中
- pdf - 导入和导出 PDF 和 Word 文档 SwiftUI
- javascript - 国际电话输入 JQuery 插件 - ajax html 响应后的呼叫集实例
- javascript - 在 URL 中更改查询参数时触发事件
- python - NameError:未定义名称“msg”