TLS 証明書の有効期限をチェックするのにcheck-tls-cert
というコマンドが便利だったのでメモ。
go で実装されているのでgo install
もしくは、ビルド済みのバイナリをダウンロードできます。
こんな感じで証明書の有効期限の残りが 28 日以下になると警告が出るようになります。
これを使って.bat
や.sh
スクリプトを組めば簡単に証明書の有効期限監視ができます。
サーバの SSL 証明書の設定をチェックしてくれるサービスはObservatory by Mozilla など、いろいろなサービスがありますがシェルスクリプトから簡単にチェックできるtestssl.sh が便利だったのでメモ。これはオフラインでも利用できるので、インターネットから到達できないようなサーバも評価することができます。
/bin/bash based SSL/TLS tester: testssl.sh
testssl.sh is a free command line tool which checks a server's service on any port for the support of TLS/SSL ciphers, protocols as well as recent cryptographic flaws and more.
使い方としてはgit clone
してからスキャンをかけるだけですね。
何もオプションをつけないと結果がコンソールにしか出力されないので、--html
オプションでレポートを生成しておくと良いと思います。
厚労省の「新型コロナワクチンQ&A」サイトで新型コロナワクチン3 回目接種の副反応について調べようと思ったら、証明書が期限切れになっていました。
有効期限は2022年3月16日までだったようです。
証明書の有効期限切れ自体はよくある凡ミスといえば凡ミスですが、コロナ禍で国のサイトがやらかしてしまっているのは残念です。
新型コロナで対応が二転三転した TLS v1.0 / v1.1 の完全無効化*1ですが、Chrome 98 でひっそりと完了したようです。
2年前は大騒ぎ*2でしたが、最近は対応も進んでいたので特に大きな話題にもなりませんでしたね。
【更新】主要ブラウザのセキュリティ強化に対する施策について[ Chrome 98 で TLS1.0/1.1 が完全無効化](2022/2/22)
これまでも「主要ブラウザの TLS1.0/1.1 無効化」について情報を公開しましたが、米 Google は 2022 年 2 月 1 日(現地時間)にデスクトップ向け「 Google Chrome 98 」をリリースしました。 このリリースにより、TLS1.0/1.1 が完全無効化され、TLS1.0/1.1 を利用している Web サーバでは、エラー画面が表示され、アクセスすることができなくなりました。 なお、Microsoft Edge や Mozilla Firefox などの主要ブラウザの最新版でも同様に、完全無効化されています。
Windows 上で .pfx の中身をチェックするためにはcertutil -dump (cert.pfx)
のようにコマンドを使えば確認できますが、面倒なのでドラッグアンドドロップで確認できるスクリプトを書いてみました。
show_pfx.bat
† 実行例
以下のような感じで証明書の中身が表示できます。
ちなみに PFX のパスワード入力はエコーバック(画面表示)されないので注意しましょう。
久しぶりに FujiSSL というところから有料の DV 証明書を買ってみたら、ドメインの認証でちょっとハマってしまいました。
FujiSSL は認証方法としてファイル(HTTP)、メール、DNS の 3 通りの認証をサポートしています。
このうち DNS 認証はウェブサーバやメールサーバを構築する前に SSL 証明書が取れるので場合によっては便利なのですが、認証にちょっと癖があるので注意が必要です。というか、メールに書いてある表現が間際らしいんですよね。
例えば非ネイキッドドメインwww.example.jp
で証明書を取得する場合、認証用の TXT レコードは ネイキッドドメイン(Zone APEX)であるexample.jp
とサブドメインであるwww.example.jp
の 2 箇所に設定する必要があります。
ゾーンファイルで書くとこんな感じでしょうか。
今回は www に CNAME を使う予定だったので、一度 CNAME を削除してから認証する必要がありました。
(CNAME は他の種類のフィールドと共存できないので。)
Let's Encrypt から発光された証明書の一部が誤発行により強制的に失効させられていたようなのでメモ。
無効化の対象になっているのはTLS-ALPN-01
で発行された証明書だけです。
certbot などを使っている場合にはチャレンジのタイプはHTTP-01
で、その他の方法を使っている人はあまりいない(というか、自分でチャレンジ方法を意識しないと使う事ができない)ので、TLS-ALPN-01
という単語を聞いてもピンと来ない人には関連がないと思います。
TLS-ALPN-01
は、仕様に問題があるとされたTLS-SNI-01
の代替だったはずですが、やはりいろいろと難しいみたいですね。
Let's Encrypt証明書、誤発行発覚で約1%が1月28日失効 - 確認と更新を | TECH+
影響を受けるとされるのはTLS-ALPN-01検証方式を使ってLet's Encryptから発行されたTLS証明書。この検証方法の実装に仕様違反があることが明らかになり、2022年1月26日(協定世界時) 00:48よりも前にTLS-ALPN-01チャレンジで発行および検証されたすべての証明書が「誤発行」だったと見なすとのことだ。5日間の猶予を経た後、2022年1月28日(協定世界時) 16:00から順次証明書の失効手続きを開始すると説明している。
† 参考
Certificate Transparency (CT) のログを調べると、ドメインに対する SSL 証明書の発行履歴を調べることができることが分かったのでメモ。
インターネット用語1分解説~Certificate Transparency (CT)とは~ - JPNIC
CTでは認証局が証明書を発行する際に、第三者が運用するCTログサーバーに証明書を登録します。 この時、CTログサーバーから証明書に対してSigned Certificate Timestamp (SCT)と呼ばれるタイムスタンプが付与されます。 2017年12月現在、新たに発行される証明書は、このSCTを含んだものが増えつつあります。
例えばcles.jp
に関する SSL 証明書の発行ログは以下のような感じで検索できます。
これを定期的に調べれば、第三者が SSL 証明書を勝手に発行していないかどうか監視できるというわけですね。
Firefox で MS のサイトを閲覧しようとするとOCSP Error が出ることが TL で話題になっていたのでメモ。
確かに URL を開くと画像のような画面が出てしまいますね。
おそらくすぐに修正版が出ると思いますが、それまでは Chrome でしのぐことにしようと思います。
CentOS 6 のまま動いていたサーバがDST Root CA X3 の期限切れ問題*1*2に巻き込まれてうまく動作しなくなってしまったので対応方法をメモ。
もちろん根本的な問題として OS の入れ替えをしなければならないことは認識しています。
その上で、今回は以下のモンキーパッチによりそれまでの時間稼ぎが目的です。
同じ問題は「RHEL/CentOS 6 OpenSSL client compatibility after DST Root CA X3 expiration」で議論されており、そこで回避策として提案されていた以下のコマンドを使うことで、問題が回避されることを確認しました。
普段ログインしないサーバなので盲点でした。
すみやかにサーバのバージョンアップを検討しようと思います。