2016-01-19 16 views
5

Ciò che intendo realizzare è molto semplice. Voglio collegarmi a un database MS SQL esterno da uno script PHP su una connessione sicura. Ciò è tuttavia risultato problematico e, con tre ore dedicate alla ricerca finora, sono in perdita.PHP connettersi a MS SQL con SSL

La piattaforma per il client è Ubuntu, il che significa che non è possibile utilizzare SQLSRV. La connessione sicura è stata testata con diversi client e funziona correttamente. Attualmente sto usando PDO e DBlib per connettermi al database, che funziona anche bene.

Non è stato possibile trovare alcun metodo per forzare una connessione sicura. Ho provato più altri driver, senza alcun risultato.

Quali sono le mie opzioni?

Edit: io sono rimasto con i seguenti registri FreeTDS ...

config.c:543: Got a match. 
config.c:565: host = 'XXXXXXXXXX' 
config.c:595: Found host entry XXXXXXXXXX. 
config.c:599: IP addr is XXXXXXXXXX. 
config.c:565: port = '1433' 
config.c:565: encryption = 'require' 
config.c:565: check certificate hostname = 'no' 
config.c:629: UNRECOGNIZED option 'check certificate hostname' ... ignoring. 
config.c:565: ca file = 'XXXXXXXXXX.pem' 
config.c:629: UNRECOGNIZED option 'ca file' ... ignoring. 
+0

Quali errori hai ricevuto? – Jamesking56

+0

Nessuno, ho interrogato il server per verificare se la connessione è stata crittografata, non lo era. Adoro alcuni errori ormai. –

risposta

3

Se si desidera utilizzare DOP, è possibile impostare DOP ODBC. Sarà necessario impostare i file di configurazione /etc/odbc.ini, /etc/odbcinst.ini e /etc/freetds/freetds.conf.

Dovrai installare anche unixodbc e freetds: apt-get install unixodbc tdsodbc.

Potete vedere più informazioni qui: Connect PHP to MSSQL via PDO ODBC

EDIT: applicare SSL in ODBC, aggiungere la parola chiave Encrypt e impostarlo su true nella stringa di connessione. E installazione di SQL Server per utilizzare SSL: https://support.microsoft.com/en-us/kb/316898

EDIT 2: Secondo l'OP, aggiungendo encryption=require e check certificate hostname a freetds.config secondo le seguenti specifiche: http://www.freetds.org/userguide/freetdsconf.htm insieme con i passaggi precedenti risolverà il problema

+0

Considererei questo, anche se non riesco a trovare alcun mezzo specifico per forzare una connessione SSL per ODBC. –

+0

@SamuelWillems Vedi la mia modifica –

+0

La parola chiave Encrypt non è disponibile quando si utilizza dblib? –

1

Avete configurato mssql_connect di utilizzare una connessione sicura? Guardate nel vostro php.ini e verificare il parametro mssql.secure_connection è impostato su

[MSSQL] 
mssql.secure_connection = On 
+0

Ehi, grazie per la tua risposta. Non volevo usare 'mssql_connect' dato che è deprecato. Ho, comunque, provato a cambiare questa impostazione e usare 'mssql_connect'. Ho installato il certificato anche in '/ etc/ssl/certs'. Mi chiedevo come potrei eseguire il debug di questo, al momento non ho idea di cosa possa andare storto. Non tenta nemmeno di connettersi tramite SSL o è in esecuzione a un problema e di default è semplice? –

Problemi correlati