私は解決策がありませんが、私はこれの背後にある理由とあなたの側を再確認する必要があるかもしれないことを説明することができます。
SNI(Server Name Indication)が原因であり、クライアントがSNIをサポートできないためです。
は、この場合は、この問題へhttps://serverfault.com/questions/594368/openssl-returns-different-ssl-certificate-to-that-shown-by-chrome
をいくつかの洞察力のために、この答えをチェックし、同じIPをドメインと証明書の束をホストしています。最新のブラウザのほとんどはSNIをサポートしており、これを検出して適切な証明書を表示することができます(Firefoxを試してみてください)。
しかし、サーバーのSSLクライアントが(「サーバー名」/「ホスト名」を指定せずに)ハンドシェイクを実行しようとすると、フェッチする証明書がわからず、したがってコア証明書をフェッチします。
解決策? クライアントは、これがホスト名であることを「示す」必要がありますし、正しい証明書を取得します。
例: opensslのs_client -connect dev.botframework.com:443
VS
opensslのs_client -servername dev.botframework.com -connect dev.botframework.com:443
これを解決するには?
ホスト名の確認フェーズを省略します。 Disabling SSL Certificate Validation in Spring RestTemplateまたは別の例:
Registry<ConnectionSocketFactory> registry = RegistryBuilder. <ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.getSocketFactory()).register("https", new SSLConnectionSocketFactory(SSLContexts.createDefault(), new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
})).build();