openssl コマンドで Symantec の証明書を使っていないか効率よく調べる
Posted on
Symantec が発行した SSL/TLS サーバ証明書が Chrome や Firefox で段階的にサポートされなくなります。もう間もなく最初の期限を迎えるので、改めて自分たちのサービスで使っていないか再チェックしました。
- Google Developers Japan: Chrome が Symantec の証明書に対する信頼を破棄する予定について
- Distrust of Symantec TLS Certificates - Mozilla Security Blog
Chrome 66 以降、Symantec によって 2016 年 6 月 1 日より前に発行された証明書に対する信頼が破棄されます。現時点では、Chrome 66 は Chrome ベータ版ユーザーに対して 2018 年 3 月 15 日に、安定版ユーザーに対して 2018 年 4 月 17 日頃にリリースされる予定です。
Symantec CA によって 2016 年 6 月 1 日より前に発行された証明書を使用しているサイト運営者は、Chrome 66 のリリースよりも前に、既存の証明書を Chrome が信頼する認証局から発行された新しい証明書に置き換える必要があります。
Symantec のサイトにチェックページがあるのですが、管理しているドメインが多いとコピペするのも面倒です。というわけで、openssl コマンドを使って Symantec の証明書を使っていないか効率よく調べてみました。
openssl コマンドで Issuer を調べる
「Lambda を使って SSL サーバ証明書の有効期限をチェックする」にも書いたのですが、openssl コマンドを使えば証明書の情報を取得できます。
このブログは AWS の Certificate Manager で取得した証明書を使っていますが、こんなコマンドで Issuer が取得できます。
$ domain=blog.manabusakai.com
$ openssl s_client -connect $domain:443 -servername $domain < /dev/null 2> /dev/null \
| openssl x509 -text | grep Issuer:
Issuer: C=US, O=Amazon, OU=Server CA 1B, CN=Amazon
Symantec の証明書だとこんな感じです(この証明書は 2018/9/13 までに入れ替える必要があります)。
$ domain=norton.com
$ openssl s_client -connect $domain:443 -servername $domain < /dev/null 2> /dev/null \
| openssl x509 -text | grep Issuer:
Issuer: C=US, O=Symantec Corporation, OU=Symantec Trust Network, CN=Symantec Class 3 EV SSL CA - G3
あとはシェルスクリプトでループさせれば OK です。
#!/bin/bash
set -eu
for domain in $domains; do
echo $domain;
openssl s_client -connect $domain:443 -servername $domain < /dev/null 2> /dev/null | \
openssl x509 -text | grep Issuer:
done
$ domains="twitter.com facebook.com instagram.com" bash check-issuer.sh
twitter.com
Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 Extended Validation Server CA
facebook.com
Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA
instagram.com
Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA
更新し忘れると重大な障害につながるので、改めてチェックしてみることをお勧めします。