2015-05-04 17 views
7

Tôi đang cố gắng kết nối với SQL Server từ một ứng dụng PHP/Zend Framework chạy trên Ubuntu và tại một vị trí từ xa.Cách tạo kết nối được mã hóa tới SQL Server từ Ubuntu bằng PHP/PDO

Tôi đang cố gắng tải ứng dụng kết nối để yêu cầu mã hóa từ SQL Server (vì kết nối mặc định trên 1433 ở trạng thái trống và tôi không muốn thông tin đăng nhập của mình bị ngửi).

Tôi đã cấu hình chứng chỉ SSL wildcard trên SQL Server, và tôi là tạo ra một kết nối PDO với DSN sau:

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

Taken từ http://blogs.msdn.com/b/brian_swan/archive/2011/03/08/sql-server-driver-for-php-connection-options-encrypt.aspx

Kể từ khi tên máy chủ doesn' t khớp với chứng chỉ đã cài đặt, tôi mong đợi kết nối thất bại - nhưng nó không thành công.

+0

Khi bạn nói rằng bạn có chứng chỉ SSL wildcared, CN nào thực hiện chứng chỉ đó khớp? Tôi nghi ngờ rằng người lái xe có thể không bao giờ làm CN thực tế để kiểm tra tên máy chủ; TrustServerCertificate = false chỉ ngăn các chứng chỉ tự ký. – mjec

+0

Vấn đề là tên máy chủ hoàn toàn không khớp với tên miền ký tự đại diện, vì vậy tôi mong đợi một lỗi. Nếu tôi không gặp lỗi chứng chỉ trong trường hợp này, tôi không thể tin tưởng kết nối khi tên máy chủ khớp với nhau. – HorusKol

+0

Thú vị - có vẻ như câu hỏi của tôi đã bị sao chép: http://stackoverflow.com/questions/34875958/php-connect-to-ms-sql-with-ssl - có câu trả lời hay ở đây và ở đó ... giao thức là gì? – HorusKol

Trả lời

-1

Nó phức tạp hơn là chỉ thiết lập cờ.

Tham khảo blog này: http://www.madirish.net/214

  1. Bạn sẽ phải tạo hoặc cài đặt chứng chỉ SSL trên máy chủ mysql.
  2. trong my.cnf làm các thiết lập dưới đây:

    ssl-ca =/etc/ssl/mysql/server.csr
    ssl-cert =/etc/ssl/mysql/server.cert
    ssl -key =/etc/ssl/mysql/server.key

  3. khởi động lại mysql: mysqld restart

  4. Tạo phím client

  5. Gửi những phím một dài với tên người dùng và mật khẩu.

Sau câu trả lời stackoverflow giải thích nó một cách chi tiết:

Connect to remote MySQL server with SSL from PHP

PHP to MySQL SSL Connections

Hy vọng nó giúp.

+1

Bạn có thể trích dẫn các phần có liên quan của bài viết không ? Tôi có thể chấp nhận câu trả lời nếu nó không chỉ là một liên kết có thể bị hỏng – HorusKol

+2

Câu hỏi này được gắn thẻ 'sql-server', cho biết Microsoft SQL Server. Câu trả lời của bạn là cho MySQL, một sản phẩm DBMS khác. –

1

Có thể nào là Encrypt=true;TrustServerCertificate không được xem xét? Nếu không có chuyên gia về vấn đề này, vui lòng xem tài liệu trong số PHP liên quan đến PDO_DBLIB DSN. Như được viết có một tham số đặc biệt trong DSN được gọi là secure và hiện không được sử dụng. Tôi không chắc chắn nếu điều này được cho là đúng cách tuyên bố rằng bạn muốn kết nối an toàn trong DSN này và nó cũng không hữu ích ở tất cả thực tế là nó được gắn thẻ là unused.

Bên cạnh đó cũng làm như sau

Trong php.ini chắc chắn rằng sau được thiết lập: MSSQL.secure_connection = On

Hãy xem nếu kết nối qua PDO_ODBC tốt hơn cho những gì bạn muốn đạt được. Để kết nối qua PDO_ODBC check out này example

+0

Cảm ơn bạn đã làm cho tôi đọc lại hướng dẫn sử dụng một lần nữa – HorusKol

+0

@ HorusKol không cần bạn đời tôi luôn luôn kiểm tra nó trong trường hợp một cái gì đó thay đổi hoặc trong trường hợp tôi quên cái gì đó. Sau khi tất cả chúng tôi đang ở trong trò chơi này bởi vì dòng dưới cùng chúng tôi là độc giả chủ yếu ... chúng tôi muốn đọc và giải quyết. :) chúc mừng –

0

cố gắng để cài đặt AES Encryption Certificate đó là tốt nhất tôi đã sử dụng để bảo vệ thông tin khỏi bị ngửi

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

làm cho giá trị mặc định thật sự của ssl crtificate trong tập tin php.ini và sau đó xử lý với AES

Các vấn đề liên quan