1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[失敗談]SendGrid Link Branding を Auto SSL 化するとき、今のサブドメインのまま作り直してリンク切れを防ぐ方法

1
Posted at

2026年8月末、SendGrid の Link Branding に Auto SSL(証明書の自動発行)が追加されました(変更履歴)。
Gmail が2026年10月末までに非 HTTPS のリンクに警告を出すため、SendGrid はすべての Link Branding で有効にするよう勧めています。

それ以前に作った Link Branding は Auto SSL にならないので、作り直しが必要です。このとき、今のサブドメインを指定せずに作り直すと、送信済みメールのリンクがすべて切れます。 実際にやってしまった記録です。

起こったこと

  • キャンペーンメールのリンクをスマホで開くと、「この接続ではプライバシーが保護されません」(NET::ERR_CERT_COMMON_NAME_INVALID)と表示された
  • 本文のリンクは、SendGrid の Link Branding(クリック計測用の中継リンク)で http://url1234.example.jp/ls/click?upn=... に書き換えられていた
  • url1234 の Link Branding に Auto SSL が入っておらず、証明書がなかった

image.png

リンクは http なのに、なぜ証明書エラーになったか

  • example.jp は HSTS を includeSubDomains 付きで返していた
  • 一度でも example.jp を開いたことのあるブラウザは、サブドメインへの http のリンクも自動で https に置き換えて開く
  • そのため、url1234 に証明書がないと警告になる(example.jp を開いたことのないブラウザなら、http のまま開けていたはず)
  • 教訓:HSTS に includeSubDomains を付けているドメインでは、外部サービスに向けるサブドメインも必ず証明書付きにする
# HSTS の設定を確認する
curl -sI https://example.jp | grep -i strict-transport

なぜ Auto SSL になっていなかったか

  • Link Branding を作ったのは2026年8月上旬。Auto SSL が追加される前だった
  • そのとき登録したのは CNAME(url1234 → sendgrid.net)だけで、証明書用のレコードはなかった
  • 現在は作成画面(ドメイン認証のウィザードの中も含む)で Auto SSL が最初からオンになっている
  • 既存の Link Branding は自動では Auto SSL にならない。削除して作り直す必要がある(SendGrid 公式)
  • 別に運用しているドメインにも、Auto SSL になっていないものがあった。同じ時期より前に作った Link Branding は、みな同じ状態のはず

image.png

やってしまったこと

  • 急いで、新しい Link Branding を Auto SSL 付きで作った
  • サブドメインは自動で url5678 に採番された。サブドメインが変わるのは避けられないと思い込んでいた
  • 旧 url1234 を SendGrid と DNS から削除した
  • その結果、送信済みのメールのリンクが開けなくなり、開封も記録されなくなった → メールを再送した

本当はこうすべきだった

  • 作成画面の Advanced Settings(最初は折りたたまれている)→「Use a custom link subdomain」で、旧設定と同じ url1234 を指定できた
  • 旧名を指定できるのは、最初に作り直すときだけ。 新しい名前で作ってしまうと、あとから旧名を証明書付きで作ることはできない(次の節)
  • 手順
    1. 旧 Link Branding を削除する(同じ名前は同時に2つ持てない)
    2. 同じサブドメインを指定し、「Auto provision SSL certificate」にチェックを入れて作り直す
    3. DNS の CNAME を、SendGrid が表示する新しい値に書き換える(向き先も変わる。例:sendgrid.net → click.sendgrid.net)
    4. 証明書用のレコード2件(_acme-challenge.url1234 の CNAME と _cf-custom-hostname.url1234 の TXT)を追加する
    5. Verify して、「SSL Certificate Available」になるまで待つ
  • リンクが開けないのは、証明書が出るまでの数分だけ。配信予約のない時間帯に作業する
  • Cloudflare を使っている場合、追加したレコードはプロキシ(オレンジ雲)ではなく「DNSのみ」(グレー雲)にする

Auto SSL 付きの Link Branding は、1つのドメインに1つだけ

  • 過去のメールを救うため、url5678 を残したまま、url1234 を Auto SSL 付きの2つ目として作ろうとした
  • 次のエラーで作れなかった

    An auto SSL branded link already exists for this domain. Please use a different domain.

  • url1234.example.jp は example.jp のリンクとしてしか作れないので、ドメインを変えて回避することもできない
  • url5678 を消して url1234 で作り直せば過去のメールは救えるが、今度は url5678 で送ったメール(再送したメール)のリンクが切れる
  • 結論:新しい名前で作り直した時点で、旧名で送ったメールのリンクは救えなくなる

分かったこと:SendGrid は、削除した後も旧リンクを読み取れる

  • 削除済みの url1234 のリンクを、DNS を通さず SendGrid へ直接送ってみた。すると、元のリンク先へ正しく転送された(302)
  • 過去のメールが開けないのは、DNS を消したからだった
  • だからこそ、最初の作り直しで同じサブドメインを指定していれば、過去のメールのリンクもそのまま開けたはず
# DNS を変えずに、旧リンクを SendGrid に直接送って転送先を確認する
# (SendGrid 側にクリックが1件記録されることがある)
ip=$(dig +short sendgrid.net | head -1)
curl -s -o /dev/null --resolve url1234.example.jp:80:$ip \
  -w "%{http_code} -> %{redirect_url}\n" "http://url1234.example.jp/ls/click?upn=..."

まとめ

  • Link Branding は必ず Auto SSL 付きにする(Gmail も非 HTTPS のリンクに警告を出す方向)
  • 作り直すときは、同じサブドメインを指定する。自動採番に任せて旧設定を消すと、送信済みメールのリンクが全部切れる
  • Auto SSL 付きの Link Branding は1ドメインに1つだけ。旧名を指定できるのは最初の作り直しのときだけ
  • HSTS に includeSubDomains を付けているなら、http のリンクでも証明書が必要

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?