HTTPS(SSL)だとTwitterカードが表示されない問題

結論を先に書いておくと:
Twitter Cardがうまく表示されず,Validatorでother errosみたいなツレナイメッセージしか表示されず,https(SSL)でのみこの問題が発生する場合には,ウェブサーバのSSL設定を見直しましょう,という話です.

見直しポイントは
– SSLProtocol
– SSLCipherSuite
の二箇所. もしかすると古いプロトコルや古いアルゴリズムしか受け付けない設定になっていませんか?


TwitterにURLを貼り付けた時に,ページ情報をある程度レイアウトされた状態で表示してくれる仕組みなのですが,先日このTwitterカードがhttps://の時だけ表示されないという現象に遭遇しました.

http:// の時はカードは問題無く表示されますし,ブラウザからはhttps://で普通に閲覧することが出来るので原因が判りませんでした.

Twitter Card の確認サイト( https://cards-dev.twitter.com/validator )で確認してみると表示されるエラーメッセージは下記の通り.

ERROR: Fetching the page failed because other errors

いや, other errors じゃねーだろ! と言いたくもなりますが,どうやらページ自体そのものを読み込めていない事は判りました.

検索してみると「中間証明書がインストールされていなかった」という記事がヒットするのですが,証明書自体は自分がセットアップしたのでインストールの問題は無いはずで,実際にサーバを確認した限りでは問題は見当たらず,証明書のセットアップ状態を,こちらのサイト( https://www.digicert.com/help/ )で確認してもオールOKという状態で.


ただ,上述の通りhttps://だとNGでページ自体をFetch出来ないと言っているのだから,https絡みであることだけは確実. こういう時は検索範囲を広げてオリジナル近辺を探る(≒我慢して英語を読む)と大抵答えが見つかるとの過去の経験からコミュニティサイト( https://twittercommunity.com/ )を検索してみたところ検索結果の先頭に答えがありました.(;・∀・)

問題のサーバのセットアップは別の方が実施されていて,自分は証明書のインストールだけをお手伝いしたのですが,SSLの設定に問題があって古いタイプのプロトコルのみを許可する設定になっていました. これが理由でtwitterからこのサーバへのhttpsでのアクセスが出来なかったのでした.

具体的にはhttpsの設定が書かれているapache(このサーバはapacheでした)のファイルの SSLProtocol の部分の設定を見直して,2文字追加しただけでhttps://経由でも無事 Twitter カードが表示されるようになりました.


上のコミュニティサイトの検索結果を幾つか拾ってみたところ,SSLProtocolの他にはSSLCipherSuiteの設定のせいで,やはりtwitterのサーバからのアクセスが出来なくなっているケースもありました.

ここはさすがに気が付きにくい箇所かも知れず,メモとしてブログに残しておくことにしました. この様なケースは極めて稀だとは思いますが,どなたかの参考になれば幸いです.(日本語のリソースでは見つけられませんでしたので)