web-dev-qa-db-ja.com

有効ではなく自己署名したSSL証明書

有効な証明書を購入しました:

たとえば、このサイトはそれを検証します: https://sslanalyzer.comodoca.com/?url=www.example.com

しかし、次のようにopenSSLでテストすると、

openssl s_client -showcerts -connect https://www.example.com:44

私は得る

戻りコードを確認してください:18(自己署名証明書)

4

SNI穴

SNIホール に陥りました。

SNIは サーバー名表示 です。これにより、同じ共有IP上に複数の異なるホスト名を置くことができます。また、実際にサーバー名をSNI対応サーバーに示さない場合は、デフォルトの証明書が返されます。 (これは「SNIホール」の部分です。)

また、OpenSSLは、指示がない限り、TLSサーバーにサーバー名を提供しません。使用 -servernameそのためのパラメータ。

$ echo '' | openssl s_client -showcerts -connect www.unival-logistics.com:443  -servername www.unival-logistics.com 2>/dev/null | grep -Ei 'subject|issuer|return'
subject=/C=US/OU=Domain Control Validated/CN=www.unival-logistics.com
issuer=/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Domain Validation CA - SHA256 - G2
    Verify return code: 20 (unable to get local issuer certificate)

省略した場合、そのホストのデフォルトの証明書が取得されます。そして、これが自己署名証明書です。 (そして、そこにあるべきではないと私は思います。自己署名証明書を提供するのは意味がありません。)

 $ echo '' | openssl s_client -showcerts -connect www.unival-logistics.com:443  2>/dev/null | grep -Ei 'subject|issuer|return'
 subject=/O=americanfuturegate.com/CN=*.americanfuturegate.com/[email protected]
 issuer=/O=americanfuturegate.com/CN=*.americanfuturegate.com/[email protected]
     Verify return code: 18 (self signed certificate)

インストールを確認する

補足:SSL3を無効にすることをお勧めします。 (SSL Labsレポート ここ 。)

12
StackzOfZtuff