.NET Uygulamalarında Kod İmzalama
.NET framework ve .NET Core/5+ uygulamalarında iki farklı imzalama mekanizması bulunur: Authenticode Signing (SignTool ile) ve Strong Name Signing. Her ikisinin de farklı amaçları ve kullanım alanları vardır.
Authenticode Signing (SignTool)
Authenticode, Microsoft'un dijital imza teknolojisidir ve derlenen çıktı dosyalarını (EXE, DLL, MSI) imzalamak için kullanılır:
signtool sign /fd sha256 /tr http://timestamp.digicert.com /td sha256 /f sertifika.pfx /p sifre "uygulama.exe"
Visual Studio'da Otomatik İmzalama
Visual Studio projenizde Post-Build Event olarak imzalama ekleyebilirsiniz:
"C:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe" sign /fd sha256 /tr http://timestamp.digicert.com /td sha256 /a "$(TargetPath)"
Strong Name Signing
Strong Name, .NET assembly'lerine benzersiz kimlik atayan bir mekanizmadır. Authenticode'dan farklı olarak GAC (Global Assembly Cache) kaydı ve assembly referans bütünlüğü için kullanılır.
# Strong Name Key oluşturma
sn -k keyPair.snk
# Assembly imzalama (proje dosyasında)
<PropertyGroup>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>keyPair.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
ClickOnce Deployment İmzalama
ClickOnce ile dağıtılan .NET uygulamaları, hem application manifest hem de deployment manifest imzalama gerektirir. Visual Studio'da Publish sekmesinden sertifika seçilerek otomatik imzalanır.
MSBuild ile CI/CD İmzalama
MSBuild projelerinde build pipeline'ına entegre imzalama yapılandırması:
<Target Name="SignOutput" AfterTargets="Build">
<Exec Command="signtool sign /fd sha256 /tr http://timestamp.digicert.com /td sha256 /a "$(TargetPath)"" />
</Target>
NuGet Paket İmzalama
.NET NuGet paketlerini de kod imzalama sertifikası ile imzalayabilirsiniz:
nuget sign paket.nupkg -CertificateFingerprint SHA256_FINGERPRINT -Timestamper http://timestamp.digicert.com
Yorumlar
Henüz yorum yapılmamış. İlk yorumu siz yapın!
Yorum Yaz