gSoapを使用して固定IPアドレスで知られているサーバーに接続しています。gSoap:IP経由でSSL/TLS証明書のホスト名が一致しない接続
サーバー証明書にこのIPアドレスの「サブジェクト代替名」エントリが含まれているため、これが機能すると思います。しかし、 "tcp_connectにSSL/TLS証明書のホスト名が一致しません"というメッセージが表示されます。
この問題について検索すると、this SE postが見つかりました。そこに示されたコードを見てみると、私は唯一のDNS名がURLに対してテストされていることが判明し、いないIPアドレス(stdsoap2.cpp):
if (nval && !strcmp(nval->name, "DNS") && !strcmp(nval->value, host))
{ ok = 1;
break;
}
が、私はこのようなコードを変更することにより、作業の接続を行うために管理:
if (nval && !strcmp(nval->name, "DNS") && !strcmp(nval->value, host))
{ ok = 1;
break;
}
if (nval && !strcmp(nval->name, "IP Address") && !strcmp(nval->value, host))
{ ok = 1;
break;
}
質問: は私がのgSOAPでこのバグを検討し、パッチファイル、またはそれはむしろ間違ったSSLの使用の結果であるべきでしょうか? IPアドレスの代わりにIPをDNS名としてサブジェクト代替名に追加するだけでこれを修正する必要がありますか?
感謝を!これは、IPAddressエントリを使用しないという一般的なゆるみであると思われますので、どちらのオプションも何とかvaildされるでしょう... – philipp
@philipp:何らかの大企業がこのバグを長年にわたって持っているため、 RFC 5280では、DNS名にdNSNameを使用し、IPアドレスにiPAddressを使用することについてはっきりしています。 –