Domanda

Non ho una buona conoscenza dei principi SSL, ma vogliono solo la crittografia a lavorare per me. Ho un DB e un utente con "Richiedi X509" specificato. I certificati necessari sono stati creati come descritto nella documentazione di MySQL, e lavorare bene -. Sono in grado di connettersi al server da linea di comando di Windows

Il problema sorge, quando cerco di fare lo stesso dal mio programma utilizzando MySQL Client API (senza SSL, il programma funziona anche bene). L'unità usata è: http://www.audio-data.de/mysql.html.

Questi sono i miei percorsi di azione: 1) se ho solo aggiungere mysql_ssl_set () chiamata (con params propri) prima di mysql_real_connect (), l'ultimo dà generico Errore di connessione SSL. 2) la documentazione di MySQL in it / mysql-ssl-set.html per esempio, che la funzione restituisce sempre 0. Ma quando ho controllato che, sembrava che il risultato è il numero 11150848. Poi ho scritto in quel modo:

showmessage(inttostr(mysql_ssl_set(mys, '.\certs\client-key.pem', '.\certs\client-cert.pem', '.\certs\ca-cert.pem', nil)));

... e ripetuto la linea 8 volte. Ogni volta che ha restituito un po 'numero maggiore - 11.158.528, 11.158.784, 11.159.040, ... e due zeri per gli ultimi due inviti

.

Dopo che mysql_real_connect () è stato finalmente successo! Il programma è riuscito anche per eseguire alcune query, restituire risultati appropriati per loro (lo so i dati), ma poi si è schiantato con una violazione di accesso: scrittura di indirizzo ... ad un certo posto. Il punto di scontro variava tra piste e lievi modifiche al codice.

Si presenta molto simile a un problema di incompatibilità di versione. Ho provato le biblioteche sia da MySQL 5.0 e 5.1 installazioni di Windows. (Il server è 5.1 e gira sotto Linux remoto, tuttavia, i programmi di 5,0 mysql-client non hanno problemi quando SSL-collegamento ad esso), ma senza successo

C'è qualcuno familiarità con il problema? Grazie mille per l'aiuto e mi dispiace per gli errori nella questione.

È stato utile?

Soluzione

Per come la vedo la dichiarazione mysql_ssl_set non è corretto. Si dichiara:

function mysql_ssl_set(_mysql: PMYSQL; key, cert, ca, capath: PAnsiChar): longint; stdcall;

Ma la mysql.h contiene:

my_bool     STDCALL mysql_ssl_set(MYSQL *mysql, const char *key,
                      const char *cert, const char *ca,
                      const char *capath, const char *cipher);

che spiega la spazzatura nel valore di ritorno, AV e così via.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top