クリックポストで「この接続ではプライバシーが保護されません」で繋がらない問題を自力で解決する方法
■ クリックポスト申し込みリンクでまさかの証明書エラー
拙者、このコロナクライシスを生き抜くために、ヤフオクで命をつないおります。ほいでまぁ、今週も無事、商品が落札されまして。これで来週も拙者、生き抜ける。やったでオカン!ありがとうオカン!というわけで、クリックポストで伝票印刷しよ。と思ったら!ガーン!!こんなん出て、クリックポスト申し込み画面に接続できませんねん。ヤフオクは配送完了して受取連絡もらえないと入金確定しないんで、ザッツ死活問題!なんです。
アタックばりにリロードしまくったら、1回だけ奇跡的につながりました。(そのあとすぐにまたエラーになったけど。) そのときにすかさずとったキャプチャがこちら。
お知らせの蘭を見て、なぬ!先週から証明書エラー出てますやん!もう5日も前ですやん!いや、気づいてんなら直そうよ、郵便局さん!
2020/04/23 証明書エラーについて
クリックポストシステムへアクセスする際等、証明書エラーが発生する場合があります。
エラーが発生した場合につきましては、下記の方法で解消する場合がございますので、
お試しいただきますようお願いいたします。
1.お時間をおいて再度お試しいただく
2.ご利用のブラウザを変更いただく
3.ご利用ブラウザのキャッシュクリアし、ブラウザを再起動いただく
ご利用の皆様にはご迷惑をおかけいたしておりますこと、深くお詫び申し上げます。
■ 証明書エラーの原因を調査してみた
なんか郵便局さんはシレッとブラウザのキャッシュのせい。働いてないお前のせい。(←言ってない) みたいなこと言ってますけども、これキャッシュクリアしても治りませんねん。ほんで、時間おいても無駄ですねん。しかも、奇跡的に途中までうまくいったと思ったら、送料支払の手前でエラーになって、ぬは!!今までの入力した内容消えた!拙者の努力、水の泡!ムキー!!!ってなりますねん。
拙者、この問題、絶対、クライアント側じゃないと思いますねん。というわけで、働かないエンジニアの底力を見せつけるべく、調査開始。
clickpost.jpに接続しようとしたときにブラウザちゃんが「いやん。やめて」って言っちゃう NET::ERR_CERT_COMMON_NAME_INVALID エラーは、SSL証明書のコモンネームがclickpost.jpじゃないドメインの鯖に接続しにいこうとしてるときに出るエラー。だから、ストップ!不正アクセス!っていうことで、勝手にブロックされちゃってるわけです。この根本的な原因は、正規の鯖にインストールされた証明書自体がおかしいか、はたまた拙者のChromeちゃんが、clickpost.jpじゃない鯖(正規じゃない鯖)に繋ぎにいこうとしているかのどっちか、ということになりんす。
そんなわけで、まずは、clieckpost.jpのAレコードをチェック。
$ dig clickpost.jp
; <<>> DiG 9.10.6 <<>> clickpost.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45324
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;clickpost.jp. IN A
;; ANSWER SECTION:
clickpost.jp. 12 IN A 54.238.140.213
clickpost.jp. 12 IN A 54.238.204.113
;; Query time: 9 msec
;; SERVER: 2400:4050:2920:4800:225:36ff:fecf:a621#53(2400:4050:2920:4800:225:36ff:fecf:a621)
;; WHEN: Mon Apr 27 09:50:43 JST 2020
;; MSG SIZE rcvd: 73
##
はいはい、Web鯖は「54.238.140.213」と「54.238.204.113」の2台あるのね。
じゃ、 名前解決でpingしてみよ。
$ ping clickpost.jp
PING clickpost.jp (52.198.94.226): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
:
なぬ!「54.238.140.213」でも「54.238.204.113」でもない鯖に行ってる!DNSで公開されてない、第3の鯖が名前解決されてしまっておる・・・!犯人はお前か!「52.198.94.226」にブラウザがアクセスした場合に証明書エラーが出てしまっておるのか!
■ このとんでもないエラーを自力で解決する方法
というわけで、ブラウザがclickpost.jpをたたかれたときに、DNSで公開されているとおりに「54.238.140.213」か「54.238.204.113」のどちらかに接続しに行ければ、問題はあっさり解決する(はず)。ただ現状、リゾルバのキャッシュなのかHerokuルーティングかの問題で、この2台のどちらでもない鯖に接続しに行ってしまう場合が(多々)ある(ぽい)。
たしかに何度もリロードすれば、何回かに1回は、正規の鯖につなぎに行ける。かもしれない。そうなればラッキー。でも拙者はそんなミラコー発動のためにDOS攻撃をかけている暇はないのだ!ww
そうゆうわけで、hostsに正規の鯖を設定して強制名前解決!(° ꈊ °)✧˖°オホッ!
■ 解決手順: Macの場合
Macの場合は、/etc/hosts に「54.238.140.213 clickpost.jp」か「54.238.204.113 clickpost.jp」っていうエントリを登録するだけ。はい、簡単。これでブラウザは必ず正規の鯖にアクセスしに行くので証明書エラーが出ることはなくなりマンモス。
$ sudo vi /etc/hosts
54.238.140.213 clickpost.jp
■ 解決手順: Windowsの場合
Windowsの場合も、hostsファイルに「54.238.140.213 clickpost.jp」か「54.238.204.113 clickpost.jp」っていうエントリを登録するだけ。はい、簡単。これでブラウザは必ず正規の鯖にアクセスしに行くので証明書エラーが出ることはなくなりマンモス。
ただ、Windowsの場合は、OSのバージョンによって、hostsファイルの場所が違うから気をつけて!
●Windows 10のhostsファイル
C:\Windows\System32\drivers\etc\hosts
●Windows 8 / Windows 8.1のhostsファイル
C:\Windows\System32\drivers\etc\hosts
●Windows 7のhostsファイル
C:\Windows\System32\drivers\etc\hosts
●Windows Vistaのhostsファイル
C:\Windows\System32\drivers\etc\hosts
自分のOSバージョンに合致したhostsファイルをメモ帳やエディタで開いて、末尾に「54.238.140.213 clickpost.jp」って記述するだけでOK。
■ 最後にひとこと
郵便局がこの問題を解決した後は、自分で設定したhostsでの名前解決は元に戻しておいたほうがいーよ!(° ꈊ °)✧˖°オホッ!