SSLのサーバの設定についての私の経験したミスについて説明します。

最近のSSLのサーバ証明書は以前は1つで足りたのですが、最近は1つ設定しただけでは済まないことがあります。中間サーバ証明書を必要としています。普通SSLの証明書を購入した時、もらえるのはそのCommon Nameの証明書だけであって、中間サーバ証明書は 「ここからダウンロードしてね」程度のリンクのみとなります。

例えば、中間サーバ証明書が必要であったと場合、その設定を入れないでSSLのサーバをPCで見たとしても全く問題なく使える場合が多いことからなかなかミスに気づきません。(僕もそうでした、別な中間サーバ証明書を入れてしまっていたため)

しかし、PCでは問題がなくても、スマートフォンなどではそうはいかず、エラー(というよりも不信なサーバ)として言われてしまいます。ブラウザで確認するのが違っているのであって、PC等で確認は確認にならないということになります。

ということで、確認の方法ですが、opensslコマンドを使って行います。SSLのWebサーバがLinux等のUNIXではないから、opensslコマンドはないとかいう場合はクライアントしてLinuxや、cygwin等でもopensslが使えるので使うことでできます。opensslのバージョンですが、比較しているわけではないので最新のものを使うということでいいと思います。

この環境で サーバ名が、 ssl.example.jp で443ポート番号である場合、

openssl s_client -connect ssl.example.jp:443

を実行します。(URLは別なものです)

opensslの結果出力

opensslの結果出力

この結果を注目します。SSLの証明書がrootまで連鎖しているかどうかを確認することになります。中間SSLサーバが必要なのに連鎖していない場合はどこかにミスがあるということになりますので、WebサーバのSSLの設定部分を確認する必要があります。

図の、Certificatie chainの部分で、0, 1 と項目番号があります。 0が今回取得したSSLです。1が中間SSL証明書となります。0,1,2とある場合もあるというのを聞きましたが、同じように考えれば問題ありません。 図の(1)の 0の i: と (2)の 1:の s: が完全に一致する必要があります。

僕のミスはここでした。同じ会社だったのですが、会社名の後ろに、256bit なのかどうかということでミスマッチしていました。後は (3)が Rootとなっているかどうかです。
opensslの結果としてエラーが出るわけでもないので上記のチェックを目視する必要があります。

 

関連記事

ページ上部へ戻る