IRONSOFTWAREHOME

C#'da Doğrulanmış PDF İmzalarından İmzalayanın Sertifikasını Okuma (X.509, eIDAS, Zincir)

Curtis Chau
Curtis Chau
Updated: 15 Mayıs 2026

Denetim boru hattınıza bir sözleşme gelir. Sözleşme dijital olarak imzalanmıştır, imza geçerlidir ve uyum ekibinizin bazı sorularına yanıt bulması gerekir: Sözleşmeyi kim imzalamıştır, o sabah sertifikası geçerli miydi ve sertifikayı veren CA, güvenilir listesiyle eşleşiyor mu? Ham imza baytlarını çekebilir, DER'yi ayrıştırabilir ve sertifika zincirini elle inceleyebilirsiniz. Veya cevapları özellikler olarak okuyarak VerifiedSignature nesnesine SignerCertificate sormayı deneyebilirsiniz.

Bu, VerifiedSignature üzerindeki SignerCertificate ve CertificateChain özelliklerinin neden inşa edildiğidir. PdfDocument.GetVerifiedSignatures()'den döndürülen, imzalayanın X.509 kimliği, veren CA, geçerlilik tarihleri, SHA-256 parmak izi, ham DER baytları ve köke kadar her ara sertifikayı gösterir. Bu, eIDAS uyumluluğu, sertifika sabitleme, denetim izleri ve güven zinciri doğrulaması için ihtiyacınız olan API yüzeyidir.

Bu kılavuz, üç sertifika denetim grubunu ele almaktadır:

  • Standart X.509 detayları: kimlik özellikleri, tam Ayırt Edilmiş İsimler, geçerlilik pencereleri ve X509Certificate2 iletişimi için ham DER baytları.
  • eIDAS ve düzenlenmiş endüstri alanları: SubjectSerialNumber üzerinden imzalayanın ulusal kimlik numarasını çekme ve eIDAS organizationIdentifier için 2.5.4.97 gibi sayısal OID'leri okuma.
  • Güven zinciri doğrulama: SHA-256 parmak izi sabitleme ve imzalayan kişiden kök CA'ya kadar tüm zinciri izleme.

Doğrulama sürecinizde sertifika denetimini test etmek için 30 günlük ücretsiz deneme sürümünü başlatın.

NuGetInstall with NuGet

PM > Install-Package IronPdf

Install IronPDF by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.
Hızlı Başlangıç: İmzalı bir PDF'den İmzalayanın Sertifikasını Okuma

Yüklü bir PDF üzerinde GetVerifiedSignatures çağırarak, imzalayanın sertifika özelliklerini doğrudan sonuçtan okuyabilirsiniz.

  1. 1Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. 2Copy and run this code snippet.

    var sig = PdfDocument.FromFile("signed.pdf").GetVerifiedSignatures().First();
    var cert = sig.SignerCertificate;
    Console.WriteLine($"{cert?.CommonName} ({cert?.Organization}) valid until {cert?.NotAfter}");
    C#
  3. 3Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer

İmzalayanın ulusal veya kişisel kimlik numarasını nasıl çıkarırsınız?

SubjectSerialNumber özelliği, sertifikanın Konu DN'sinden SERIALNUMBER OID değerini döndürür. Düzenlemelere tabi sektörlerde (eIDAS onaylı sertifikalar, bankacılık, devlet tarafından verilen dijital kimlikler), bu alan imzalayan kişinin ulusal kimlik numarasını, vergi kimlik numarasını veya kişisel kimlik numarasını içerir. Bu, sertifikanın kendi seri numarası değildir; bu CertificateSerialNumber.

using IronPdf;
using IronPdf.Signing.Inspection;

var pdf = PdfDocument.FromFile("eidas-signed-invoice.pdf");

foreach (var sig in pdf.GetVerifiedSignatures())
{
    var cert = sig.SignerCertificate;
    if (cert is null) continue;

    // Subject DN SERIALNUMBER OID (national ID, tax ID, etc.)
    Console.WriteLine($"Signer Identity (SERIALNUMBER): {cert.SubjectSerialNumber ?? "not present"}");

    // Certificate's own serial from the issuing CA
    Console.WriteLine($"Certificate Serial (CA-issued):  {cert.CertificateSerialNumber}");
}
Tips: Bu ikisi arasındaki farkla ilgili kısa bir hatırlatma: SubjectSerialNumber dokümanı kim imzaladığını söyler (bir kişi veya organizasyon kimliği, Konu DN içine gömülmüş gibi bir ulusal kimlik veya vergi numarası). CertificateSerialNumber hangi sertifikanın kullanıldığını söyler; (Bu, sertifika veren Yetkili Kurumun iptal listeleri ve denetim günlükleri için atadığı benzersiz seridir.

Convenience Identity Özelliklerine Nasıl Erişebilirsiniz?

SignerCertificateInfo en yaygın ihtiyaç duyulan Konu DN alanlarını doğrudan özellikler olarak gösterir, bu yüzden tam DN dizisini kendiniz ayrıştırmanıza gerek yoktur.

İmzalayanın Adını ve Bağlı Olduğu Kurumu Okuma

CommonName, Organization, Country ve Email özellikleri, çoğu kimlik iş akışının öncelikle ulaştığı şeyleri kapsar.

using IronPdf;
using IronPdf.Signing.Inspection;

var pdf = PdfDocument.FromFile("signed-agreement.pdf");

foreach (var sig in pdf.GetVerifiedSignatures())
{
    var cert = sig.SignerCertificate;
    if (cert is null) continue;

    // Common Subject DN fields exposed directly as properties
    Console.WriteLine($"CommonName (CN):  {cert.CommonName}");
    Console.WriteLine($"Organization (O): {cert.Organization}");
    Console.WriteLine($"Country (C):      {cert.Country}");
    Console.WriteLine($"Email:            {cert.Email}");
}

Email özelliği önce emailAddress OID'sini Konu DN'sinde kontrol eder. Mevcut değilse, Konu Alternatif Adı (SAN) rfc822Name uzantısına geri döner. Country özelliği, iki harfli ISO 3166-1 alpha-2 kodunu döndürür (örneğin, "DE", "US", "FR"). Tüm kolaylık özellikleri, sertifikada karşılık gelen alan mevcut değilse null döndürür.

Her Şeye İhtiyacınız Olduğunda Tam DN'yi Okuma

Denetim günlüğü, veri analizi veya uyumluluk raporları için, SubjectDN ve IssuerDN tam Ayırt Edilmiş İsim dizelerini döndürür.

using IronPdf;
using IronPdf.Signing.Inspection;

var pdf = PdfDocument.FromFile("signed-agreement.pdf");

foreach (var sig in pdf.GetVerifiedSignatures())
{
    var cert = sig.SignerCertificate;
    if (cert is null) continue;

    // Full DN strings for audit logging or downstream parsing
    Console.WriteLine($"Full Subject DN: {cert.SubjectDN}");
    Console.WriteLine($"Full Issuer DN:  {cert.IssuerDN}");
}

Rastgele Konu ve Veren Alanlarını Nasıl Çıkarırsınız?

GetSubjectField(string) ve GetIssuerField(string) yöntemleri, kısa adlar veya sayısal OID'leri kabul eder. Bu yöntemler büyük/küçük harf duyarlı değildir ve alan mevcut değilse null döndürür.

Desteklenen kısa adlar: CN, O, OU, C, L, ST, E, SERIALNUMBER, SURNAME, T, GIVENNAME, UID, ORGANIZATIONIDENTIFIER.

Herhangi Bir Konu Alanını Okuma (eIDAS OID'leri Dahil)

Konu DN'den herhangi bir alanı çekmek için "OU" gibi bir kısa ad veya "2.5.4.97" (eIDAS organizationIdentifier) gibi bir sayısal OID geçirin.

using IronPdf;
using IronPdf.Signing.Inspection;

var pdf = PdfDocument.FromFile("eidas-contract.pdf");

foreach (var sig in pdf.GetVerifiedSignatures())
{
    var cert = sig.SignerCertificate;
    if (cert is null) continue;

    // Short-name lookups (case-insensitive)
    string? orgUnit = cert.GetSubjectField("OU");
    string? surname = cert.GetSubjectField("SURNAME");
    string? givenName = cert.GetSubjectField("GIVENNAME");
    string? title = cert.GetSubjectField("T");

    // Numeric OID lookup (eIDAS organizationIdentifier)
    string? orgId = cert.GetSubjectField("2.5.4.97");

    Console.WriteLine($"Name: {givenName} {surname} ({title}), OU: {orgUnit}");
    Console.WriteLine($"eIDAS Org ID (2.5.4.97): {orgId ?? "not present"}");
}

Sayısal OID aramaları, eIDAS ve kuruluş kimliklerini, mesleki nitelikleri veya standart kısa adlarla kapsanmayan yargı alanına özgü alanları ekleyen düzenlenmiş endüstri sertifikaları için esastır.

Verenin Alanlarını Okuma

GetIssuerField, veren CA'nın Ayırt Edilmiş İsmi üzerinde aynı şekilde çalışır. Bu, güven doğrulama, CA raporlaması ve imzaların verici otoriteye göre gruplandırılması için yararlıdır.

using IronPdf;
using IronPdf.Signing.Inspection;

var pdf = PdfDocument.FromFile("eidas-contract.pdf");

foreach (var sig in pdf.GetVerifiedSignatures())
{
    var cert = sig.SignerCertificate;
    if (cert is null) continue;

    // GetIssuerField works the same way as GetSubjectField
    string? issuerCN = cert.GetIssuerField("CN");
    string? issuerO = cert.GetIssuerField("O");
    string? issuerCountry = cert.GetIssuerField("C");

    Console.WriteLine($"Issued by: {issuerCN} ({issuerO}, {issuerCountry})");
}

Bu türden favori kütüphanem IronPDF'dir. PDF dosyalarının hızlı ve verimli bir şekilde işlenmesine olanak tanır. Ayrıca, PDF/A formatına dışa aktarma ve dijital imzalama gibi birçok değerli özelliğe sahiptir.

Milan Jovanovic

Microsoft MVP

Vaka çalışmasını görüntüle

IronOCR, manuel işleme maliyetinden yıllık 40.000 USD tasarruf etmemizi sağlıyor, üretkenliği artırıyor ve yüksek etkili görevler için kaynakları serbest bırakıyor. Kesinlikle tavsiye ederim.

Brent Matzelle

Teknoloji Müdürü, OPYN

Vaka çalışmasını görüntüle

IronSuite, operasyonlarımızda kritik bir rol oynar. Bunlar, iş süreçlerinde verimliliği artıran, kat planları oluşturmak ve envanter yönetimini geliştirmek gibi araçlardır.

David Jones

Baş Yazılım Mühendisi, Agorus Build

Vaka çalışmasını görüntüle

Sertifika Geçerliliğini Nasıl Kontrol Edersiniz?

SignerCertificateInfo iki geçerlilik yardımcısı sağlar:

  • IsExpired, DateTime.UtcNow > NotAfter ise true döndürür.
  • IsValidAt(DateTime), verilen zaman damgası NotAfter penceresi içinde ise true döndürür. Genel kullanım, sertifikanın imzalama sırasında geçerli olduğunu doğrulamaktır.
using IronPdf;
using IronPdf.Signing.Inspection;

var pdf = PdfDocument.FromFile("archived-contract.pdf");

foreach (var sig in pdf.GetVerifiedSignatures())
{
    var cert = sig.SignerCertificate;
    if (cert is null) continue;

    Console.WriteLine($"Valid from:  {cert.NotBefore}");
    Console.WriteLine($"Valid until: {cert.NotAfter}");
    Console.WriteLine($"Expired now: {cert.IsExpired}");

    // Confirm certificate was valid when the document was signed
    bool validAtSigning = cert.IsValidAt(sig.SigningDate);
    Console.WriteLine($"Valid at signing time ({sig.SigningDate}): {validAtSigning}");
}
Tips: Geçerlilik tarihleri sertifikadan çıkarılamadığında IsExpired false (değil true) döndürür. Yardımcı kasıtlı olarak temkinlidir; yalnızca meta veriler eksik olduğu için süresinin dolduğunu varsaymaz. Sıfır güven iş akışları için, eksik geçerlilik tarihlerini açıkça bir hata durumu olarak ele alın.

Denetim izleri için, hem IsExpired kontrolünü (geçerli geçerlilik) hem de IsValidAt(signingDate) kontrolünü (imzalama anındaki geçerlilik) kaydedin. Sonrasında süresi dolmuş bir sertifika hala belgenin imzalandığı sırada geçerli olabilir; her iki veri noktası da uyumluluk açısından önemlidir.

Sertifika Sabitleme İçin SHA-256 Parmak İzini Nasıl Kullanırsınız?

Sha256Thumbprint özelliği, DER kodlu sertifikanın SHA-256 karması olan 64 karakterli büyük harfli bir hex dizisini döndürür. Bu, kabul edilen imzalayan sertifikaların bilinen iyi listesine karşı sabitlediğiniz değerdir.

using IronPdf;
using IronPdf.Signing.Inspection;
using System.Collections.Generic;

// Known-good signer thumbprints from a compliance database
var pinnedThumbprints = new HashSet<string>
{
    "A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2",
    "F6E5D4C3B2A1F6E5D4C3B2A1F6E5D4C3B2A1F6E5D4C3B2A1F6E5D4C3B2A1F6E5"
};

var pdf = PdfDocument.FromFile("submitted-form.pdf");

foreach (var sig in pdf.GetVerifiedSignatures())
{
    var cert = sig.SignerCertificate;
    if (cert is null) continue;

    // Pin against trusted thumbprint list
    bool trusted = pinnedThumbprints.Contains(cert.Sha256Thumbprint);
    Console.WriteLine($"Signer: {cert.CommonName}, Thumbprint: {cert.Sha256Thumbprint}");
    Console.WriteLine($"Pinned: {trusted}");
}

Ham Sertifika Verilerinden X509Certificate2 Nasıl Oluşturursunuz?

RawData özelliği, DER kodlamalı sertifikayı bir byte[] olarak döndürür. Her çağrı savunma kopyası döndürür, böylece dahili veriler referans olarak hiçbir zaman açığa çıkmaz. Bu veriyle, .NET'in yerel kriptografik API'leriyle (zincir oluşturma, politika doğrulama, CRL kontrolü) etkileşim için bir System.Security.Cryptography.X509Certificates.X509Certificate2 oluşturabilirsiniz.

using IronPdf;
using IronPdf.Signing.Inspection;
using System.Security.Cryptography.X509Certificates;

var pdf = PdfDocument.FromFile("signed-report.pdf");

foreach (var sig in pdf.GetVerifiedSignatures())
{
    var cert = sig.SignerCertificate;
    if (cert is null) continue;

    // Construct X509Certificate2 from defensive DER copy
    byte[] derBytes = cert.RawData;
    var x509 = new X509Certificate2(derBytes);

    Console.WriteLine($"X509 Subject:    {x509.Subject}");
    Console.WriteLine($"X509 Issuer:     {x509.Issuer}");
    Console.WriteLine($"X509 Serial:     {x509.SerialNumber}");
    Console.WriteLine($"X509 Algorithm:  {x509.SignatureAlgorithm.FriendlyName}");
    Console.WriteLine($"X509 Key Size:   {x509.PublicKey.Key.KeySize} bits");
}
Please note: Her RawData erişimi, taze bir savunma kopyası döndürür. Dahili bayt dizisi, referans olarak hiçbir zaman açığa çıkmaz, böylece döndürülen baytları değiştirmek sonraki çağrıları etkilemez.

Bu etkileşim yolu, IronPDF'nin imza doğrulamasını X509Chain.Build() gibi mevcut .NET sertifika doğrulama hatlarına, CRL/OCSP üzerinden iptal kontrolüne veya özel X509CertificateValidator uygulamalarına takmanıza olanak tanır.

Sertifika Zincirini Nasıl Yürürsünüz?

VerifiedSignature üzerindeki CertificateChain özelliği, imzalayan → ara CA(lar) → kök CA'dan sıralanmış bir IReadOnlyList<SignerCertificateInfo> döndürür. İndeks 0 her zaman imzalayan sertifikadır (aynı nesne SignerCertificate olarak). Liste asla null değildir; eğer zincir çıkarılamazsa, yalnızca imzalayan sertifikayı içerir.

using IronPdf;
using IronPdf.Signing.Inspection;

var pdf = PdfDocument.FromFile("enterprise-signed.pdf");

foreach (var sig in pdf.GetVerifiedSignatures())
{
    Console.WriteLine($"--- Signature: {sig.SignatureName} ---");
    Console.WriteLine($"Chain length: {sig.CertificateChain.Count}");

    // Walk from signer (index 0) through intermediates to root CA
    for (int i = 0; i < sig.CertificateChain.Count; i++)
    {
        var cert = sig.CertificateChain[i];
        string role = i == 0 ? "Signer"
                    : i == sig.CertificateChain.Count - 1 ? "Root CA"
                    : $"Intermediate CA ({i})";

        Console.WriteLine($"  [{role}]");
        Console.WriteLine($"    Subject:     {cert.SubjectDN}");
        Console.WriteLine($"    Issuer:      {cert.IssuerDN}");
        Console.WriteLine($"    Serial:      {cert.CertificateSerialNumber}");
        Console.WriteLine($"    Valid:       {cert.NotBefore} to {cert.NotAfter}");
        Console.WriteLine($"    Expired:     {cert.IsExpired}");
        Console.WriteLine($"    Thumbprint:  {cert.Sha256Thumbprint}");
    }
}
Please note: Zincirdeki her SignerCertificateInfo, SignerCertificate ile aynı özellikleri gösterir: kimlik alanları, geçerlilik, parmak izi, RawData, GetSubjectField() ve GetIssuerField(). Her ara CA'nın süresini doğrulayabilir, kökün parmak izini güvenilir kök depolarınıza karşı kontrol edebilir ve uyumluluk denetimleri için tam zinciri kaydedebilirsiniz.

Sonraki Adımlar

SignerCertificate ve CertificateChain, IronPDF API yüzeyinden ayrılmadan tam X.509 incelemesi sağlar. Buradan, bu özelliklerin yerleştirdiği IronPDF'nin parçalarına daha derinlemesine gitmek doğal bir sonraki harekettir.

İş akışının imzalama tarafı için, dijital imzalar nasıl yapılır bölümü, sertifika oluşturma, meta veriler ve artımlı imzalama konularını ele alır. Yüksek güvenlikli ortamlarda HSM tabanlı imzalama için, HSM imzalama kılavuzu, PKCS#11 entegrasyonunu kapsar. Çalıştırmaya hazır parçacıklara mı ihtiyacınız var? dijital imzalar kod örneği onları sağlar.

Kendi imzalanmış PDF'lerinizde denemeye hazır mısınız? Ücretsiz 30 günlük denemenize başlayın veya lisanslama seçeneklerini görüntüleyin.

Frequently Asked Questions

PDF imzalarından X.509 sertifika detaylarını okumanın amacı nedir?

PDF imzalarından X.509 sertifika detaylarını okumak, imzalayanın kimliğini doğrulamanızı, sertifikanın geçerliliğini kontrol etmenizi ve eIDAS gibi standartlara uyumluluğu sağlamanızı mümkün kılar. Bu işlem, belgelerin doğruluğunu ve bütünlüğünü korumak için gereklidir.

IronPDF, PDF imzalarından imzalayan kimliğini nasıl çıkartır?

IronPDF, PDF imzalarından imzalayan kimliğini X.509 sertifika detaylarına erişerek çıkartan araçlar sunar, bu da belgenin kaynağını doğrulamayı ve imzalayanın kimlik bilgilerini önemsimayi kolaylaştırır.

IronPDF, PDF imzalarından eIDAS alanları çıkartabilir mi?

Evet, IronPDF PDF imzalarından eIDAS alanlarını çıkartabilir, bu da geliştiricilerin belgelerin Avrupa Birliği'nin elektronik imza ile ilgili düzenlemelerine uyumluluğunu sağlamasını mümkün kılar.

IronPDF kullanarak PDF imzasından hangi bilgiler elde edilebilir?

IronPDF kullanarak, PDF imzasından imzalayan kimliği, sertifika geçerliliği, parmak izi ve sertifika zinciri gibi bilgileri alabilir, imzanın doğruluğunu ayrıntılı şekilde anlayabilirsiniz.

IronPDF kullanarak bir PDF imzasının geçerliliğini doğrulamak mümkün mü?

Evet, IronPDF, X.509 sertifika detaylarını inceleyerek PDF imzasının geçerliliğini doğrulamanıza olanak tanır; buna, son kullanma tarihlerini kontrol etmek ve imzalama sertifikasının bütünlüğünü sağlamak dahildir.

PDF imza doğrulaması için IronPDF kullanmanın faydaları nelerdir?

IronPDF kullanarak PDF imza doğrulaması yapmak, ayrıntılı sertifika bilgilerinin otomatik olarak çıkarılması, C# uygulamaları ile uyumluluk ve eIDAS gibi uluslararası standartlara uyum gibi faydalar sağlar.

IronPDF, PDF imzalarından parmak izi çıkarmayı nasıl yönetir?

IronPDF, X.509 sertifika detaylarına PDF imzası içinde erişerek parmak izi çıkarmayı yönetir, böylece siz de sertifikanın benzersiz parmak izi ile doğruluğunu ve bütünlüğünü doğrulayabilirsiniz.

IronPDF, PDF imzasından bir sertifika zinciri sağlayabilir mi?

IronPDF, PDF imzasından bir sertifika zinciri sağlayabilir; bu, imzalayanın sertifikasından güvenilen kök sertifikasına kadar olan güven yolunu izlemenize yardımcı olur, imzanın geçerliliğini sağlar.

IronPDF, PDF imzalarını okumak için hangi programlama dilini destekler?

IronPDF, PDF imzalarını okumak ve doğrulamak için C#'ı destekler, bu da .NET ekosisteminde çalışan geliştiriciler için ideal bir çözüm sunar.

IronPDF, elektronik imzalar için uluslararası standartlarla uyumlu mu?

Evet, IronPDF, eIDAS gibi uluslararası standartlarla uyumludur, böylece PDF imza doğrulama süreçlerinizin elektronik imzalarla ilgili düzenleyici gereksinimleri karşıladığından emin olabilirsiniz.

Curtis Chau
Technical Writer

Curtis Chau holds a Bachelor’s degree in Computer Science (Carleton University) and specializes in front-end development with expertise in Node.js, TypeScript, JavaScript, and React. Passionate about crafting intuitive and aesthetically pleasing user interfaces, Curtis enjoys working with modern frameworks and creating well-structured, visually appealing manuals.

...
Read More

Başlamaya Hazır mısınız?

Nuget Downloads 20,389,208Sürüm:2026.7yeni yayınlandı

Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez

IronPDF Ücretsiz Deneyin

5 Dakikada Ayarlayın

C# PDF DLL

DLL İndir

Şimdi İndir

veya Windows Yükleyiciyi şuradan buradan indirin.

  1. IronPDF'i, ~/Libs gibi bir yere, Solution dizininiz içinde indirin ve açın.
  2. Visual Studio Çözüm Gezgini'nde, Referanslar'a sağ tıklayın. Tarayıcı sekmesini seçin, "IronPdf.dll"
PDF için C# NuGet Kütüphanesi

NuGet ile yükleyin

                  Install-Package IronPdf
                
nuget.org/packages/IronPdf/
  1. Çözüm Gezgini'nde Referanslar'a sağ tıklayın, NuGet Paketlerini Yönet
  2. Tarayıcıya tıklayın ve "IronPdf" arayın
  3. Paketi seçin ve yükleyin
Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmez
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge related to IronPDF Product Demo

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez