Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

System Center Service Manager:Disable Outdated Crypto

From sysadminafterdark docs
Revision as of 16:04, 8 June 2024 by Sysadminafterdark (talk | contribs) (Created page with "Disable Outdated Crypto == History == During my troubleshooting process, I encountered several difficulties attempting to get System Center Service Manager:System Center Service Manager to sync with System Center Service Manager:Exchange Connector. I found an old reddit post https://www.reddit.com/r/SCSM/comments/q39mo3/scsm_exchange_connector_41_reply_creates_a_new/ SCSM - Exchange Connector 4.1 = reply creates a ne...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


History

During my troubleshooting process, I encountered several difficulties attempting to get System Center Service Manager:System Center Service Manager to sync with System Center Service Manager:Exchange Connector. I found an old reddit post [SCSM - Exchange Connector 4.1 = reply creates a new ticket] that recommended disabling outdated crypto. A link to the script author is included in this post, but I have included it here in case the link breaks in the future.

Deployment

Run the following script as an administrator in Powershell ISE then reboot the server:

$ArrayPaths = @()
#Paths
$RootPath = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\'
$Protocals = @('SSL 2.0\','SSL 3.0\','TLS 1.0\','TLS 1.1\','TLS 1.2\')
$ProtocalFolders = @('Client','Server')

#Verify Folder Paths (Servers by default do not have TLS path folders)
ForEach ($Protocal in $Protocals)
    {
        $ProtocalPath = $RootPath+$Protocal
        IF(!(Test-Path $ProtocalPath))
            {New-Item -Path $ProtocalPath -Force | Out-Null}
        #Verify Full Path
        Foreach ($ProtocalFolder in $ProtocalFolders)
            {
                $FullPath = $ProtocalPath+$ProtocalFolder
                $ArrayPaths += $ProtocalPath+$ProtocalFolder
                IF(!(Test-Path $FullPath))
                {New-Item -Path $FullPath -Force | Out-Null}
            }
    }

#Updated .net 3.5 Framework
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727' -Name 'SystemDefaultTlsVersions' -Value 1 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727' -Name 'SystemDefaultTlsVersions' -Value 1 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727' -Name 'SchUseStrongCrypto' -Value 1 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727' -Name 'SchUseStrongCrypto' -Value 1 -PropertyType DWORD -Force | Out-Null

#Updated .net Framework
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value 1 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value 1 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework' -Name 'OnlyUseLatestCLR' -Value 1 -PropertyType DWORD -Force | Out-Null

#Prompt for Script Choice
$enable = New-Object System.Management.Automation.Host.ChoiceDescription '&Enable'
$disable = New-Object System.Management.Automation.Host.ChoiceDescription '&Disable'
$options = [System.Management.Automation.Host.ChoiceDescription[]]($enable, $disable)
$result = $host.ui.PromptForChoice('-Enable/Disable TLS Config-', 'Do you want to enable/disable server TLS configuration?', $options, 0)

#Enable TLS (Result = 0)
If ($result -eq 0)
    {
        ForEach ($ArrayPath in $ArrayPaths)
            {
                If ($ArrayPath -notlike '*TLS 1.2*')
                    {
                        New-ItemProperty -Path $ArrayPath -Name 'DisabledByDefault' -Value 1 -PropertyType DWORD -Force | Out-Null
                        New-ItemProperty -Path $ArrayPath -Name 'Enabled' -Value 0 -PropertyType DWORD -Force | Out-Null
                    }
                If ($ArrayPath -like '*TLS 1.2*')
                    {
                        New-ItemProperty -Path $ArrayPath -Name 'DisabledByDefault' -Value 0 -PropertyType DWORD -Force | Out-Null
                        New-ItemProperty -Path $ArrayPath -Name 'Enabled' -Value 1 -PropertyType DWORD -Force | Out-Null
                    }
            }
        Write-Host "Successfully enabled TLS Compliance."
    }

#Disable TLS (Result = 1)
If ($result -eq 1)
{
    ForEach ($ArrayPath in $ArrayPaths)
        {
            If ($ArrayPath -like '*TLS 1.0*')
                {
                    New-ItemProperty -Path $ArrayPath -Name 'DisabledByDefault' -Value 0 -PropertyType DWORD -Force | Out-Null
                    New-ItemProperty -Path $ArrayPath -Name 'Enabled' -Value 1 -PropertyType DWORD -Force | Out-Null
                }
        }
        Write-Host "Successfully disabled TLS Compliance, complete any testing/configuration requried and run script again to enable TLS."
}