.NET 프레임워크 애플리케이션용 .NET 에이전트를 설치했지만, 뉴렐릭에 데이터가 나타나지 않습니다. 에이전트 로그에 다음 중 하나와 같은 오류가 포함되어 있습니다:
NewRelic ERROR: Unable to connect to the New Relic service at collector.newrelic.com:443 : System.Net.WebException:
The request was aborted: Could not create SSL/TLS secure channel.
NewRelic ERROR: Unable to connect to the New Relic service at collector.newrelic.com:443 : System.Net.WebException:
The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException:
Received an unexpected EOF or 0 bytes from the transport stream.
NewRelic ERROR: Unable to connect to the New Relic service at collector.newrelic.com:443 : System.Net.WebException:
The underlying connection was closed: An unexpected error occurred on a receive. ---> System.ComponentModel.Win32Exception:
The client and server cannot communicate, because they do not possess a common algorithm.
해결책
뉴렐릭은 TLS 1.2 이상이 필요합니다. .NET 에이전트는 애플리케이션이 사용하도록 구성된 모든 TLS 프로토콜을 사용하므로, 애플리케이션이 TLS 1.2를 사용하도록 설정하여 문제를 해결하십시오.
애플리케이션이 사용하는 프로토콜을 확인하십시오.
.NET 에이전트 버전 10.6.0부터 에이전트는 뉴렐릭에 연결할 때 애플리케이션이 사용하도록 설정된 프로토콜을 INFO 수준에서 로그에 기록합니다. 예:
Current TLS Configuration (System.Net.ServicePointManager.SecurityProtocol): Ssl3, Tls
SystemDefault, 또는 Tls12을(를) 포함하는 목록은 애플리케이션이 TLS 1.2용으로 구성되었음을 의미합니다. 연결이 계속 실패하면 Windows에서 TLS 1.2가 활성화되어 있는지 확인하십시오.
Ssl3, Tls과(와) 같이 Tls12이(가) 없는 목록은 애플리케이션이 TLS 1.2용으로 구성되지 않았음을 의미합니다. 아래의 수정 사항 중 하나를 사용하십시오.
문제 해결
상황에 맞는 해결책을 선택하십시오:
.NET 프레임워크는 호스트 서버에 설치된 최신 버전이 아니라 애플리케이션이 타겟으로 하는 프레임워크 버전을 기반으로 기본 TLS 프로토콜을 선택합니다. 이전 버전을 타겟으로 하는 애플리케이션은 .NET 프레임워크 4.8이 설치된 서버에서도 이러한 구형 기본값을 유지합니다.
타겟 프레임워크
기본 TLS 프로토콜
4.7 이상
TLS 1.2를 포함하는 운영 시스템의 기본값
4.6~4.6.2
TLS 1.0, 1.1 및 1.2
4.5.2 이하
SSL 3.0 및 TLS 1.0 전용
ASP.NET 애플리케이션의 경우, 타겟 프레임워크는 컴파일된 프로젝트 속성이 아니라 web.config의 httpRuntime 요소에 의해 결정됩니다. httpRuntime에 targetFramework 속성이 없거나 애플리케이션에 web.config 파일이 포함되어 있지 않은 경우, ASP.NET은 .NET 프레임워크 4.0 타겟 동작을 사용하여 애플리케이션을 실행합니다. 이 조건은 구형 프로젝트 템플릿에서 업그레이드된 애플리케이션에서 자주 발생합니다. 이 문제를 해결하려면 targetFramework을(를) 4.7 이상으로 설정하십시오:
<configuration>
<system.web>
<httpRuntimetargetFramework="4.8"/>
</system.web>
</configuration>
주의
targetFramework을(를) 설정하면 .NET 프레임워크 4.5 이후 도입된 ASP.NET 동작 업데이트도 활성화됩니다. 이 설정 변경 사항을 배포하기 전에 애플리케이션 기능을 철저히 테스트하십시오.
콘솔 애플리케이션 및 Windows 서비스와 같은 다른 애플리케이션의 경우, .NET 프레임워크 4.7 이상을 타겟으로 하도록 애플리케이션을 다시 빌드하십시오.
애플리케이션을 변경할 수 없는 경우 이 해결책을 사용하십시오. 이러한 레지스트리 항목은 타겟 프레임워크 버전에 관계없이 서버의 모든 .NET 프레임워크 애플리케이션에서 TLS 1.2 사용을 강제합니다:
SystemDefaultTlsVersions .NET 프레임워크가 운영 시스템의 기본 TLS 프로토콜을 사용하도록 합니다.
SchUseStrongCrypto TLS 1.1 및 1.2를 활성화하고 취약한 암호를 비활성화합니다.
두 레지스트리 키 모두에 두 값을 설정하십시오. WOW6432Node 키는 32비트 IIS 애플리케이션 풀과 같은 32비트 애플리케이션에 적용됩니다.
주의
이는 서버의 모든 .NET 프레임워크 애플리케이션에 영향을 미치는 시스템 전체 설정입니다. 취약한 암호만 지원하는 구형 서버와 연결하는 애플리케이션은 연결이 끊어질 수 있습니다. 이 지침을 주의 깊게 따르십시오. 잘못된 레지스트리 수정은 운영 문제를 일으킬 수 있습니다. 변경하기 전에 레지스트리 백업을 생성하십시오.
애플리케이션을 다시 시작합니다. IIS의 경우 iisreset을(를) 실행합니다. .NET 프레임워크는 애플리케이션이 시작될 때만 이러한 값을 읽습니다.
TLS 1.2는 Windows Server 2012 이상에서 기본적으로 활성화되어 있습니다. Windows Server 2008 R2에서 또는 보안 정책에 의해 TLS 1.2가 비활성화된 경우, 뉴렐릭 엔드포인트에 대한 아웃바운드 연결을 보장하기 위해 Client 역할에 대한 프로토콜을 활성화하십시오.
이 레지스트리 키 경로 내의 기존 설정을 검토하십시오. "Enabled"이(가) 0 (으)로 설정되거나 "DisabledByDefault"이(가) 1(으)로 설정된 경우 TLS 1.2가 비활성화됩니다:
애플리케이션이 System.Net.ServicePointManager.SecurityProtocol을(를) 설정하는 경우, 해당 값은 애플리케이션과 에이전트 모두에 대해 위의 모든 수정 사항보다 우선 적용됩니다. 코드에서 이를 검색하십시오.
Microsoft는 이 속성을 전혀 설정하지 않고 운영 시스템이 선택하도록 두는 것을 권장합니다. 애플리케이션이 .NET 프레임워크 4.7 이상을 타겟으로 하는 경우, 명시적인 줄을 제거하십시오. 코드 업데이트에 명시적인 프로토콜 포함이 필요한 경우, 기존 값을 덮어쓰는 대신 TLS 1.2를 추가하고, 애플리케이션 시작 시 가능한 한 일찍 할당을 실행하십시오:
.NET 에이전트는 애플리케이션의 프로세스 내에서 실행되며 애플리케이션이 사용하는 것과 동일한 .NET 네트워킹 클래스를 사용하여 뉴렐릭에 연결합니다. 애플리케이션과 동일한 TLS 프로토콜을 사용하며, 에이전트 단독으로 다른 TLS 버전을 설정할 수 없습니다.
이전 .NET 프레임워크 기본값에는 TLS 1.2가 포함되어 있지 않으므로, 이전 프레임워크 버전을 타겟으로 하는 애플리케이션이나 httpRuntime targetFramework이(가) 없는 ASP.NET 애플리케이션은 뉴렐릭에 연결할 수 없습니다. .NET(이전의 .NET Core)을 기반으로 구축된 애플리케이션은 운영 시스템의 TLS 설정을 사용하며 영향을 받지 않습니다.