PHP подключается к MS SQL с SSL

То, что я хочу достичь, очень просто. Я хочу подключиться к внешней базе данных MS SQL из скрипта PHP через безопасное соединение. Это, однако, оказалось проблематичным, и, с трех часов до начала исследований, я в недоумении.

Платформа для клиента – Ubuntu, что означает, что я не могу использовать SQLSRV. Безопасное соединение было протестировано с разными клиентами, и оно отлично работает. В настоящее время я использую PDO и DBlib для подключения к базе данных, которая также отлично работает.

Я не смог найти какой-либо метод для принудительного подключения. Я попробовал несколько других драйверов, но безрезультатно.

Какие у меня варианты?

Изменить: у меня остались следующие журналы 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. 

Если вы хотите использовать PDO, вы можете настроить PDO ODBC. Вам нужно будет настроить конфигурационные файлы /etc/odbc.ini , /etc/odbcinst.ini и /etc/freetds/freetds.conf .

Вам также нужно будет установить unixodbc и freetds: apt-get install unixodbc tdsodbc .

Вы можете увидеть больше информации здесь: Подключить PHP к MSSQL через PDO ODBC

EDIT: Чтобы обеспечить соблюдение SSL в ODBC, добавьте ключевое слово Encrypt и установите для него значение true в строке подключения. И настройте SQL Server на использование SSL: https://support.microsoft.com/en-us/kb/316898

EDIT 2: в соответствии с OP добавление encryption=require и check certificate hostname на freetds.config в соответствии со следующей спецификацией: http://www.freetds.org/userguide/freetdsconf.htm вместе с вышеуказанными шагами исправят проблему

Вы настроили mssql_connect для использования безопасного соединения? Посмотрите в php.ini и убедитесь, что mssql.secure_connection параметра mssql.secure_connection установлено значение on

 [MSSQL] mssql.secure_connection = On