首页 > 解决方案 > 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 问题。

任何帮助,将不胜感激。

编辑

原来它也与这个 SO question 有关。

标签: pythondjangogoogle-cloud-platformdeploymentsendgrid

解决方案


Twilio SendGrid 开发人员布道者在这里。

您需要启用SSL 点击跟踪,以便您的 CDN 可以使用您的域的有效证书将 SSL 内容转发到 SendGrid。


推荐阅读