SSL証明書ワイルドカード名の確認
なるほど、詳しい説明ありがとうございます。
現在のバージョンではCommonNameが一致してもしなくてもユーザーに確認する仕様になっていますので、危険性は低いと思いますが、念のためRFC2818のように「*」はドメイン一つ分まで一致させるように変更したいと思います。
また同様の理由でSAN拡張も考慮していませんし、それが必要なホストを私は見たことがありませんが、重要性について調査してみます。
とりあえずRFC2818に準拠するように変更しました。 正式版1.98dに適用する予定です。 http://git.sourceforge.jp/view?p=ffftp/ffftp.git;a=commit;h=ec3a0422703d76cef8ced61fd90062e5c2d67925
早速の対応ありがとうございます。ソースをみて、サブドメインに一致しなくなっていることを確認しました。
少し不思議に思ったのは、「*」が連続した場合スキップしていますが、「**.example.com」みたいなワイルドカード表示がされる場合があるのでしょうか
また、SAN拡張につきましては、FTPSサーバで使われていないなら非対応のままで問題ないと思います。
gitのtestのc5f759cca631e9411e4705668c8cc90134fb9cd0について。
socketwrapper.cのIsHostNameMatched()のワイルドカード比較アルゴリズムは、FTPSのRFC4217が参照するRFC2818のsubjectAltName拡張比較で禁じている下記のサブドメイン付きホスト名との一致を起こしてしまいます。
"*.a.com matches foo.a.com but not bar.foo.a.com."
ややこしい話をすると、ワイルドカード文字は RFC2595/2818/4513/5425 などプロトコルごとに微妙に扱いが異なります。ウェブブラウザでも製品やリリース時期によってどの範囲のマッチを許すか違うようで、FFFTPの現在の実装と同じ振る舞いもあったようです。しかし、現在の証明書発行各社の説明を読む限りだとサブドメイン付きでの一致は想定していないようで、CommonNameのワイルドカードはsubjectAltNameと同等の扱いを期待しているようです。ちなみに、マイクロソフト製品の現在の仕様はKB258858のようです。
また、TLDのワイルドカードは規約上は禁止はされていないようですが、禁止するか警告するかオプション設定できると安心です。
ついでですが、ワイルドカード証明書のついでにsubjectAltName拡張(SAN拡張)もサポートしたほうがよろしいかと(サポート済みでしたらごめんなさい)。たとえばtwitterはSAN拡張を使っています(FTPSのサーバが使うとは限りませんが)。https://twitter.com/
以上、ご検討下さいませ。