2016-08-29 2 views
1

Я собираюсь создать несколько отчетов Excel, и я пытаюсь зашифровать мои SQL-соединения. На стороне сервера у меня все правильно настроено, и с помощью студии управления Microsoft я могу установить безопасное соединение. Однако я не могу найти решение для Excel. Я думаю, мне нужно что-то вроде Encrypt = yes или это ADODB.Connection не поддерживает SSL?Encrypt excel-vba ADODB connection

Private Function GetDataFromADO(ByVal Sel As String) As ADODB.Recordset 

'Declare variables' 
    Dim objMyConn As ADODB.Connection 
    Dim objMyCmd As ADODB.Command 
    Dim objMyRecordset As ADODB.Recordset 

    Set objMyConn = New ADODB.Connection 
    Set objMyCmd = New ADODB.Command 
    Set objMyRecordset = New ADODB.Recordset 

'Open Connection' 
    objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=" & sqlServer & ";Database=" & _ 
     sqlDB & ";User ID=" & sqlUsername & ";Password=" & sqlPassword & ";" 
    Dim s As String 
    s = objMyConn.ConnectionString 
    objMyConn.Open 


'Set and Excecute SQL Command' 
    Set objMyCmd.ActiveConnection = objMyConn 
    objMyCmd.CommandText = Sel 
    objMyCmd.CommandType = adCmdText 

'Open Recordset' 
    Set objMyRecordset.Source = objMyCmd 
    objMyRecordset.Open 


Set GetDataFromADO = objMyRecordset 

Заранее спасибо

+0

Насколько я знаю, подключение к SQL Server не обрабатывается Excel, а Windows (с точки зрения безопасности, сети, шифрования, аутентификации и т. Д.). Вы даже не можете установить время ожидания соединения в Excel/ADO. Ну, конечно, вы можете использовать 'ADODB.Connection.ConnectionTimeout = 5000'. Но вы можете пропустить эту линию, так как она не окажет никакого влияния. Итак, если я не ошибаюсь, тогда вы должны сосредоточиться на своих настройках SQL и убедиться, что он разрешает только зашифрованные соединения: https://msdn.microsoft.com/en-us/library/ms191192.aspx Тогда вам все будет в порядке с 'Trusted_Connection = yes'. – Ralph

ответ

0

Опция шифрования Force на моем SQL Server сделал трюк.

Благодаря Ральф :)

0

Если вы хотите, чтобы обеспечить каждое подключение к SQL Server с помощью SSL или TLS, то вы должны установить параметр Force Encryption Да для набора протоколов на сервере, а также установить сертификат, созданный ЦС домена или общедоступный ЦС. Установка Force Encryption на yes шифрует все соединения с самозаверяющим сертификатом, сгенерированным на SQL Server. Это дает возможность открывать человека в средней атаке. CA или Центр сертификации - это служба или приложение, используемое для подтверждения личности пользователей, компьютеров и организаций, а также для создания, управления и обновления сертификатов.

Предположим, вы используете сертификат, созданный доменом CA. Пока ваш SQL Server, система CA и клиентская система домена могут взаимодействовать друг с другом, должно произойти, что клиент инициирует сеанс с SQL Server, который затем отвечает запросом на безопасный сеанс и представляет сертификат, сгенерированный из сервер домена CA для клиента для проверки. Затем клиент должен проверить сертификат двумя способами, подтвердив с помощью системы CA домена, что он является действительным сертификатом, и с использованием цифровой подписи, чтобы убедиться, что он не был изменен.

Основы включения SSL на вашем SQL Server должны импортировать сертификат и закрытый ключ в хранилище сертификатов учетной записи службы, работающей в базе данных, а затем установить свойство Force Encryption в yes в свойствах серверных протоколов, используя Диспетчер конфигурации SQL Server и на вкладке «Сертификат» выберите сертификат, сгенерированный из CA или домена общего доступа.

+0

На моем сервере также работает веб-сайт. Я запросил сертификат для своего сайта с Let's Encrypt и импортировал его в хранилище сертификатов. Поэтому я использую сертификат Lets Encrypt для моего SQL Server. Похоже, он работает. Я не использую параметр Trusted_Connection = yes. Только недостаток: позволяет шифровать сертификат в течение 6 месяцев, и только оригинал Cert в магазине сертификатов веб-сайта обновляется автоматически – Fraxner

+0

Звучит неплохо. Определенно быть активным в отношении замены сертификата SQL Server до истечения срока его действия. У меня это случилось в QA, и это было важно. –