21 Nisan 2024 Pazar

Sertifika zinciri güvenilmeyen bir yetkili tarafından verildi hatası çözümü

Herkese merhaba, yeni güncellemeler sonrasında karşılaştığım bir hatadan bahsetmek istiyor.

SQL Server için son yeni güncelleme ile SQL connection için güvenli server servtifikaları hayatımıza girmiştir. Bağlantı cümlesine TrustServerCertificate=true eklemek sorunu çözüyor.

TrustServerCertificate olarak ayarlandığında true aktarım katmanı, kanalı şifrelemek için SSL kullanır ve güveni doğrulamak için sertifika zincirinde yürümeyi atlar. olarak ayarlanırsa TrustServerCertificate true ve şifreleme açıksa, olarak ayarlansa Encrypt false bile sunucuda belirtilen şifreleme düzeyi kullanılır. Aksi takdirde bağlantı başarısız olur.

Microsoft.Data.SqlClient.SqlException

A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - Sertifika zinciri güvenilmeyen bir yetkili tarafından verildi.)

DevExpress XPO kullanıyorsanız aynı hatayı burada da alacaksınız. Config dosyasına TrustServerCertificate=true parametreyi eklediğinizde sorun çözülecektir. Örnek Connection String 'aşağıda görebilirsiniz.

<add name="getConnection" connectionString="server=.;database=DATABASE;integrated security=SSPI;TrustServerCertificate=true" providerName="System.Data.SqlClient" />

DevExpress.Xpo.DB.Exceptions.UnableToOpenDatabaseException

Unable to open database. Connection string: 'data source=.;user id=USER;password=***REMOVED***;initial catalog=DATABASE;Persist Security Info=true;'; Error: 'Microsoft.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - Sertifika zinciri güvenilmeyen bir yetkili tarafından verildi.) ---> System.ComponentModel.Win32Exception (0x80004005): Sertifika zinciri güvenilmeyen bir yetkili tarafından verildi.

Kaynak: https://learn.microsoft.com/tr-tr/dotnet/api/system.data.sqlclient.sqlconnectionstringbuilder.trustservercertificate?view=dotnet-plat-ext-8.0

19 Şubat 2024 Pazartesi

.Net Maui 8 projelerinde Android cihazı Web API ye bağlanırken "Connection failure" hatası çözümü

 

Android cihaz yada emulatörden (USB üzerinden) bağlanıp test yapmak istediğinizde IIS üzerindeki .Net Web API'iye bağlanırken "Connection failure" hatası ile karşılaşıyorsanız XML dosya içerisinde IP adres belirleyerek sorunu çözebilirsiniz.

public static string Adres = DeviceInfo.Platform == DevicePlatform.Android ? "http://192.168.2.100:8090" : "http://localhost:8090"; 

public static string url = $"{Adres}/api/Masters/";

Android yerel trafiği etkinleştirmek için ağ güvenliği XML yapılandırma dosyası oluşturmanız gerekir.


.Net Maui 8 uygulama projenizdeki Platforms\Android\esources\xml klasörüne network_security_config.xml adlı yeni bir XML dosyası eklenerek gerçekleştirilebilirsiniz. XML dosyasını aşağıdaki yapılandırmaya uygun şekilde düzenleyebilirsiniz.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config
cleartextTrafficPermitted="true">
    <domain
includeSubdomains="true">192.168.X.X</domain>
  </domain-config>
</network-security-config>

Ardından, .Net Maui uygulama projenizdeki Platforms\Android\AndroidManifest.xml dosyasındaki uygulama düğümünde networkSecurityConfig özelliğini yapılandırmak için aşağıdaki kodu eklemelisiniz.

<?xml version="1.0" encoding="utf-8"?>
<manifest>
    <application
android:networkSecurityConfig="@xml/network_security_config" ...>
        ...
    </application>
</manifest>

Kaynak

https://learn.microsoft.com/en-us/dotnet/maui/data-cloud/local-web-services?view=net-maui-8.0