이 콘텐츠는 선택한 언어로 제공되지 않습니다.
Chapter 7. Known issues
The known issues for running .NET on Red Hat Enterprise Linux (RHEL) include the following:
it does not run on earlier versions of RHEL.
dotnet dev-certs https --trustdoes not work on RHEL..NET supports the creation of HTTPS certificate through
dotnet dev-certs https, but it does not support trusting them throughdotnet dev-certs https --trust. The client that connects to the ASP.NET Core application, such ascurlor Firefox, will warn about the untrusted self-signed certificate. To work around this in a browser such as Firefox, ignore the warning and trust the certificate explicitly when the warning about the untrusted certificate comes up. Command-line tools support flags to ignore untrusted certificates. Forcurl, use the--insecureflag. Forwget, use the--no-check-certificateflag.There are no NuGet packages for
s390xon nuget.org.Using the
rhel.8-s390xorlinux-s390xruntime identifier can cause somedotnetcommands to fail when they try to obtain these packages. These commands are either not fully supported ons390xas described in the other known issues, or the issue can be fixed by not specifying the runtime identifier.-
Single file applications are not supported on
s390x. -
PublishReadyToRun/crossgen is not supported on
s390x. .NET 6.0 on
s390xdoes not understand memory and cpu limits in containers.In such environments, it is possible that .NET 6.0 will try to use more memory than allocated to the container, causing the container to get killed or restarted in OpenShift Container Platform. As a workaround you can manually specify a heap limit through an environment variable:
MONO_GC_PARAMS=max-heap-size=<limit>. You should set the limit to 75% of the memory allocated to the container. For example, if the container memory limit is 300MB, setMONO_GC_PARAMS=max-heap-size=225M.The default version of the
Microsoft.NET.Test.Sdkpackage in the test project templates (xunit,nunit,mstest) is unusable ons390x. Trying to build/run tests will fail with a "System.NotSupportedException: Specified method is not supported" exception.If you are trying to run test on
s390x, update the version of theMicrosoft.NET.Test.Sdkpackage to at least 17.0.0.-
OmniSharp, the language server used by IDEs like Visual Studio Code, is not available on
s390x. RHEL 9 has disabled several weak security algorithms to improve security.
Some .NET APIs using these algorithms will fail at runtime with CryptographicExceptions. If you really must use the weak algorithms and risk compromising security, you can loosen the system’s security policies by using:
update-crypto-policies --set DEFAULT:SHA1
# update-crypto-policies --set DEFAULT:SHA1Copy to Clipboard Copied! Toggle word wrap Toggle overflow or
update-crypto-policies --set LEGACY”
# update-crypto-policies --set LEGACY”Copy to Clipboard Copied! Toggle word wrap Toggle overflow For more information, see the “Security” section in the overview of major changes in the RHEL 9 release notes.
Strong Naming will not work out of the box on RHEL 9.
RHEL 9 has disabled the use of SHA-1 in the default configuration. .NET uses SHA-1+RSA to identify assemblies that have been signed with a strong name. The explicit SHA-1+RSA algorithm combination is a part of the ECMA-335 specification involving strong naming. However, given the recent attacks against SHA-1, RHEL 9 has deprecated the use of SHA-1 (when combined with RSA) to improve security across the entire operating system. This means that any use of strong naming, including verification at build time, will fail.
The OpenSSL errors on RHEL 9 will indicate an invalid digest algorithm. For example:
error : Unhandled exception. Interop+Crypto+OpenSslCryptographicException: error:03000098:digital envelope routines::invalid digest
error : Unhandled exception. Interop+Crypto+OpenSslCryptographicException: error:03000098:digital envelope routines::invalid digestCopy to Clipboard Copied! Toggle word wrap Toggle overflow There are several possible workarounds:
Enable support for SHA-1+RSA, by loosening the system’s security policies:
update-crypto-policies --set DEFAULT:SHA1
# update-crypto-policies --set DEFAULT:SHA1Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteThis will not work when FIPS is enabled. In FIPS mode, SHA-1 is completely disallowed.
Switch to Public Signing. In order to do this, you must modify the project files to set up a number of properties:
<PropertyGroup> <AssemblyOriginatorKeyFil>$(MSBuildThisFileDirectory)Key.snk</AssemblyOriginatorKeyFile> <SignAssembly>true</SignAssembly> <PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign> </PropertyGroup>
<PropertyGroup> <AssemblyOriginatorKeyFil>$(MSBuildThisFileDirectory)Key.snk</AssemblyOriginatorKeyFile> <SignAssembly>true</SignAssembly> <PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign> </PropertyGroup>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
The NTLM technology is considered insecure in RHEL 9.
The
gss-ntlmssppackage, which provides NTLM authentication support, has been removed from RHEL 9. That means .NET in RHEL 9 can not authenticate against NTLM. If you use NLTM authentication, please use another mechanism to authenticate.For more details, see the Identity Management section of Considerations in Adopting RHEL 9.