Skip to content

Commit 9418667

Browse files
author
Bob Pokorny
committed
Updated language for WinSQL binding concerns
1 parent 5fba9a8 commit 9418667

2 files changed

Lines changed: 75 additions & 1 deletion

File tree

docsource/winsql.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,50 @@ The WinSql Certificate Store Type, referred to by its short name 'WinSql,' is de
88

99
- **Limitations:** Users should be aware that for this store type to function correctly, certain permissions are necessary. While some advanced users successfully use non-administrator accounts with specific permissions, it is officially supported only with Local Administrator permissions. Complexities with interactions between Group Policy, WinRM, User Account Control, and other environmental factors may impede operations if not properly configured.
1010

11+
### Verifying a Certificate Binding
12+
13+
After the orchestrator binds a certificate to a SQL Server instance, **SQL Server Configuration Manager (SSCM) may show an empty value in the Certificate dropdown** under SQL Server Network Configuration → Protocols → Properties → Certificate tab. This is a known display limitation of SSCM and does not indicate a problem with the binding. SSCM applies its own certificate eligibility filter when populating the dropdown and may exclude certificates that SQL Server itself loads and uses successfully, particularly certificates bound programmatically rather than through the SSCM UI.
14+
15+
Use the following two-step process to confirm a binding is correct independently of SSCM.
16+
17+
#### Step 1 — Confirm the thumbprint is written to the registry
18+
19+
Run the following on the SQL Server machine, replacing `MSSQLSERVER` with your instance name if using a named instance:
20+
21+
```powershell
22+
$instance = "MSSQLSERVER"
23+
$full = Get-ItemPropertyValue "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" -Name $instance
24+
(Get-ItemPropertyValue "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$full\MSSQLServer\SuperSocketNetLib" -Name "Certificate").ToUpper()
25+
```
26+
27+
This should return the thumbprint of the bound certificate. If the value is empty, the binding was not written to the registry.
28+
29+
#### Step 2 — Confirm SQL Server loaded the certificate
30+
31+
After the SQL Server service restarts, it writes a confirmation to the SQL Server error log. Run the following to check:
32+
33+
```powershell
34+
$logPath = (Resolve-Path "C:\Program Files\Microsoft SQL Server\MSSQL*\MSSQL\Log\ERRORLOG").Path
35+
Select-String -Path $logPath -Pattern "certificate" -CaseSensitive:$false | ForEach-Object { $_.Line }
36+
```
37+
38+
A successful binding produces a line similar to the following:
39+
40+
```
41+
The certificate [Cert Hash(sha1) "D54E6CFFD7DF55FF9610355025BD603D7C25A2D4"] was successfully loaded for encryption.
42+
```
43+
44+
The thumbprint in this message should match the value returned in Step 1. If the log instead shows `was not found or was not loaded`, the SQL Server service account does not have read access to the certificate's private key — contact your administrator to review private key permissions.
45+
46+
#### Note on `encrypt_option`
47+
48+
Binding a certificate does not automatically encrypt all client connections. The certificate is loaded and ready for use, but SQL Server will only negotiate TLS for a given connection when either the client requests it (`Encrypt=True` in the connection string) or the server is configured to force encryption. To verify that TLS is active for a specific connection, execute the following after connecting to the instance:
49+
50+
```sql
51+
SELECT session_id, encrypt_option, net_transport
52+
FROM sys.dm_exec_connections
53+
WHERE session_id = @@SPID
54+
```
55+
56+
`encrypt_option = TRUE` confirms TLS is in use for that connection. Whether to enforce encryption server-wide (Force Encryption setting in SSCM) is a separate operational decision outside the scope of the orchestrator.
57+

integration-manifest.json

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,15 @@
9999
"DefaultValue": "true",
100100
"Required": true,
101101
"Description": "Determine whether the server uses SSL or not (This field is automatically created)"
102+
},
103+
{
104+
"Name": "JEAEndpointName",
105+
"DisplayName": "JEA End Point Name",
106+
"Type": "String",
107+
"DependsOn": "",
108+
"DefaultValue": "",
109+
"Required": false,
110+
"Description": "Name of the JEA endpoint to use for the session (This field is automatically created)"
102111
}
103112
],
104113
"EntryParameters": [
@@ -198,6 +207,15 @@
198207
"DefaultValue": "true",
199208
"Required": true,
200209
"Description": "Determine whether the server uses SSL or not (This field is automatically created)"
210+
},
211+
{
212+
"Name": "JEAEndpointName",
213+
"DisplayName": "JEA End Point Name",
214+
"Type": "String",
215+
"DependsOn": "",
216+
"DefaultValue": "",
217+
"Required": false,
218+
"Description": "Name of the JEA endpoint to use for the session (This field is automatically created)"
201219
}
202220
],
203221
"EntryParameters": [
@@ -330,7 +348,7 @@
330348
"Add": true,
331349
"Create": false,
332350
"Discovery": false,
333-
"Enrollment": false,
351+
"Enrollment": true,
334352
"Remove": true
335353
},
336354
"Properties": [
@@ -396,6 +414,15 @@
396414
"DefaultValue": "false",
397415
"Required": true,
398416
"Description": "Boolean value (true or false) indicating whether to restart the SQL Server service after installing the certificate. Example: 'true' to enable service restart after installation."
417+
},
418+
{
419+
"Name": "JEAEndpointName",
420+
"DisplayName": "JEA End Point Name",
421+
"Type": "String",
422+
"DependsOn": "",
423+
"DefaultValue": "",
424+
"Required": false,
425+
"Description": "Name of the JEA endpoint to use for the session (This field is automatically created)"
399426
}
400427
],
401428
"EntryParameters": [

0 commit comments

Comments
 (0)