私は SSL の原則について十分な知識を持っていませんが、暗号化を機能させたいだけです。「REQUIRE X509」が指定されたDBとユーザーがいます。必要な証明書は、MySQL のドキュメントで説明されているように作成されており、うまく機能しています。Windows コマンド ラインからサーバーに接続できます。
MySQL クライアント API を使用してプログラムから同じことを実行しようとすると、問題が発生します (SSL を使用しない場合、プログラムも正常に動作します)。使用される単位はhttp://www.audio-data.de/mysql.htmlです。
これらは私のアクション パスです: 1) mysql_real_connect() の前に mysql_ssl_set() 呼び出し (適切なパラメーターを使用) を追加すると、最後の呼び出しで一般的な SSL 接続エラーが発生します。2) en/mysql-ssl-set.html の MySQL ドキュメントには、関数は常に 0 を返すと書かれています。
showmessage(inttostr(mysql_ssl_set(mys, '.\certs\client-key.pem', '.\certs\client-cert.pem', '.\certs\ca-cert.pem', nil)));
...そして、その行を 8 回繰り返しました。11158528、11158784、11159040、... と最後の 2 つの呼び出しで 2 つのゼロが返されるたびに、わずかに大きい数が返されました。
その後、 mysql_real_connect() がついに成功しました! プログラムはいくつかのクエリを実行し、それらに対して適切な結果を返すことさえできましたが(私はデータを知っています)、アクセス違反でクラッシュしました:アドレスの書き込み...どこかで。クラッシュ ポイントは、実行とコードのわずかな変更によって異なります。
バージョンの非互換性の問題によく似ています。MySQL 5.0 と 5.1 の両方の Windows インストール (サーバーは 5.1 であり、Linux でリモートで実行されます。ただし、5.0 の mysql-client プログラムは、SSL 接続時に問題はありません) のライブラリを試しましたが、成功しませんでした。
この問題に精通している人はいますか?助けてくれてありがとう、質問の間違いをお詫びします。