2015-05-04 9 views
7

Próbuję połączyć się z serwerem SQL z aplikacji PHP/Zend Framework działającej w systemie Ubuntu i zdalnej lokalizacji.Jak utworzyć zaszyfrowane połączenie z SQL Server z Ubuntu przy użyciu PHP/PDO

Próbuję uzyskać aplikację łączącą, aby zażądać szyfrowania z serwera SQL Server (ponieważ domyślne połączenie w 1433 jest jasne i nie chcę, aby moje poświadczenia zostały wykryte).

mam skonfigurowane wieloznaczny certyfikat SSL na serwerze SQL, a ja tworzenia połączenia PDO z następującym DSN:

dblib:host=server-not-matching-domain.com:1433;dbname=MyDB;Encrypt=true;TrustServerCertificate=false;charset= 

zaczerpnięte z http://blogs.msdn.com/b/brian_swan/archive/2011/03/08/sql-server-driver-for-php-connection-options-encrypt.aspx

Ponieważ nazwa hosta nie robi” t pasuje do zainstalowanego certyfikatu, oczekiwałbym, że połączenie się nie powiedzie - ale nie zawiedzie.

+0

Kiedy mówisz, że masz certyfikat SSL z dzikim certyfikatem, jakie certyfikaty CN spełniają ten certyfikat? Podejrzewam, że kierowca może nigdy nie wykonywać rzeczywistej kontroli CN nad nazwą hosta; TrustServerCertificate = false zapobiega tylko samopodpisanym certyfikatom. – mjec

+0

Chodzi o to, że nazwa hosta absolutnie nie pasuje do domeny wieloznacznej, więc oczekuję błędu. Jeśli w tym scenariuszu nie otrzymam błędu certyfikatu, nie mogę zaufać temu połączeniu, gdy nazwa hosta jest zgodna. – HorusKol

+0

Interesujące - wydaje się, że moje pytanie zostało zduplikowane: http://stackoverflow.com/questions/34875958/php-connect-to-ms-sql-with-ssl - tu i tam są dobre odpowiedzi ... jaki jest protokół? – HorusKol

Odpowiedz

-1

Jest to bardziej skomplikowane niż ustawienie flagi.

Patrz tego bloga: http://www.madirish.net/214

  1. trzeba będzie utworzyć lub zainstalować certyfikat SSL na serwerze mysql.
  2. w my.cnf zrobić z poniższych ustawień:

    SSL CA =/etc/ssl/mysql/server.csr
    ssl-cert =/etc/ssl/mysql/server.cert
    ssl -klawisz =/etc/ssl/mysql/server.key

  3. restart mysql: mysqld restart

  4. utworzyć klucze klienta

  5. Wyślij te klucze długie z nazwą użytkownika i hasłem.

Obserwuje StackOverflow odpowiedzi wyjaśnić w szczegółach:

Connect to remote MySQL server with SSL from PHP

PHP to MySQL SSL Connections

Nadzieję, że to pomaga.

+1

Czy możesz zacytować odpowiednie części artykułu ? Mogę zaakceptować odpowiedź, jeśli jest to coś więcej niż link, który może zginąć. – HorusKol

+2

To pytanie zostało oznaczone jako 'sql-server', co wskazuje na Microsoft SQL Server. Twoja odpowiedź dotyczy MySQL, który jest innym produktem DBMS. –

1

Czy to możliwe, że Encrypt=true;TrustServerCertificate nie są w ogóle brane pod uwagę? Nie będąc ekspertem w tym zakresie, zapoznaj się z dokumentacją w dokumencie PHP dotyczącą PDO_DBLIB DSN. Jak napisano, w DSN jest specjalny parametr, który nazywa się secure i jest obecnie nieużywany. Nie jestem pewien, czy ma to być poprawny sposób deklarowania, że ​​chcesz mieć bezpieczne połączenie w tym DSN, a także nie jest pomocne w tym, że jest on oznaczony jako unused.

Ponadto również wykonać następujące czynności

W php.ini upewnić się następujący zestaw: MSSQL.secure_connection = On

Sprawdźcie, czy podłączenie poprzez PDO_ODBC jest lepsze dla tego, co chcesz osiągnąć. Do podłączenia poprzez PDO_ODBC Sprawdź tę example

+0

Dzięki za ponowne przeczytanie instrukcji – HorusKol

+0

@HorusKol nie ma potrzeby, zawsze sprawdzam, czy coś się nie zmieniło lub na wypadek, gdy coś zapomniałem. W końcu jesteśmy w tej grze, ponieważ w zasadzie jesteśmy czytelnikami ... lubimy czytać i rozwiązywać. :) Twoje zdrowie –

0

próby zainstalowania AES certyfikat szyfrowania jest najlepsze, jakie wykorzystywane do ochrony danych uwierzytelniających przed nosem

dblib:host=server-not-matching-domain.com:1433;dbname=MyDB;Encrypt=true;TrustServerCertificate=true;charset=utf8 

zrobić domyślna wartość prawda SSL crtificate w pliku php.ini , a następnie procedura z AES

Powiązane problemy