2016-08-29 2 views
1

Ich bin dabei, einige Excel-Berichte zu erstellen, und ich versuche, meine SQL-Verbindungen zu verschlüsseln. Auf der Serverseite habe ich alles richtig eingerichtet und mit Microsoft Management Studio kann ich eine sichere Verbindung aufbauen. Jedoch kann ich keine Lösung für Excel finden. Ich denke, ich brauche etwas wie Encrypt = yes oder ist das ADODB.Connection SSL nicht unterstützt?Verschlüsseln Sie Excel-VBA ADODB-Verbindung

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 

Vielen Dank im Voraus

+0

Soweit ich weiß, wird die Verbindung zu einem SQL Server nicht von Excel sondern von Windows (in Bezug auf Sicherheit, Netzwerk, Verschlüsselung, Authentifizierung, etc.) behandelt. Sie können das Verbindungszeitlimit nicht einmal in Excel/ADO festlegen. Nun, Sie können natürlich 'ADODB.Connection.ConnectionTimeout = 5000' verwenden. Sie können diese Zeile aber auch überspringen, da sie keine Auswirkungen hat. Also, wenn ich mich nicht völlig irre, dann sollten Sie sich auf Ihre SQL-Einstellungen konzentrieren und sicherstellen, dass es nur verschlüsselte Verbindungen zulässt: https://msdn.microsoft.com/en-us/library/ms191192.aspx Dann sollten Sie in Ordnung sein mit 'Trusted_Connection = yes'. – Ralph

Antwort

0

Die Option Force-Verschlüsselung auf meinem SQL Server hat den Trick.

Dank Ralph :)

0

Wenn Sie jede Verbindung zu Ihrem SQL Server mit SSL oder TLS sichern wollen, dann sollten Sie die Force-Encryption Option auf yes für den Satz von Protokollen auf dem Server, und installieren Sie auch eine Zertifikat, das von der Domänenzertifizierungsstelle oder einer öffentlichen Zertifizierungsstelle generiert wurde. Wenn Force Encryption auf Ja festgelegt wird, werden alle Verbindungen mit einem selbstsignierten Zertifikat verschlüsselt, das vom SQL Server generiert wird. Dies lässt die Möglichkeit eines Mannes im mittleren Angriff offen. Die Zertifizierungsstelle (Certification Authority, CA) ist der Dienst oder die Anwendung, die zum Bestätigen der Identität von Benutzern, Computern und Organisationen sowie zum Generieren, Verwalten und Erneuern von Zertifikaten verwendet wird.

Nehmen wir an, Sie verwenden ein Zertifikat, das von der Domäne CA generiert wurde. Solange Ihr SQL Server, Ihr Domänen-CA-System und Ihr Client-System miteinander kommunizieren können, sollte der Client eine Sitzung mit dem SQL-Server einleiten, die dann mit der Anforderung einer sicheren Sitzung antwortet und ein Zertifikat ausstellt der Domänen-CA-Server für die Validierung an den Client. Dann sollte der Client das Zertifikat auf zwei Arten validieren, indem er mit dem CA-System der Domäne überprüft, ob es ein gültiges Zertifikat ist, und die digitale Signatur verwenden, um zu verifizieren, dass es nicht modifiziert wurde.

Die Grundlagen zum Aktivieren von SSL auf Ihrem SQL Server sind das Importieren des Zertifikats und des privaten Schlüssels in den Zertifikatsspeicher des Dienstkontos, auf dem das Datenbankmodul ausgeführt wird. Legen Sie dann in den Eigenschaften der Serverprotokolle die Force Encryption-Eigenschaft auf yes fest SQL Server-Konfigurationsmanager und auf der Registerkarte Zertifikat das Zertifikat auswählen, das von der Domänenzertifizierungsstelle oder einer öffentlichen Zertifizierungsstelle generiert wird.

+0

Auf meinem Server läuft auch eine Webseite. Ich habe mit Let's Encrypt ein Zertifikat für meine Website angefordert und dieses in den Zertifikatsspeicher importiert. Also benutze ich das Lets Encrypt Certificate für meinen SQL Server. Es sieht so aus, als ob es funktioniert. Ich verwende nicht die Option Trusted_Connection = yes. Einziger Nachteil: Das Leads Encrypt cert dauert 6 Monate und nur das Original Cert im Website Certificate Store wird automatisch erneuert – Fraxner

+0

Klingt gut. Denken Sie unbedingt daran, das SQL Server-Zertifikat vor Ablauf zu ersetzen. Ich hatte das einmal in QA und es war kritisch. –