CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 50

50
Chương 1: Phát triển ứng dụng

11.

11.

Hoãn vi c ký assembly

Hoãn vi c ký assembly

Bạn cần tạo một assembly tên mạnh, nhưng không muốn mọi thành viên trong
nhóm phát triển truy xuất khóa riêng của cặp khóa tên mạnh.

Trích xuất và phân phối khóa công khai của cặp khóa tên mạnh. Làm theo
hướng dẫn trong mục 1.9 để tạo tên mạnh cho assembly. Áp dụng đặc tính

System.Reflection.AssemblyDelaySignAttribute

cho assembly để chỉ định nó là

assembly sẽ được ký sau. Sử dụng đối số

-Vr

của công cụ Strong Name (sn.exe)

để vô hiệu việc xác minh tên mạnh cho assembly này.

Các assembly tham chiếu đến assembly tên mạnh sẽ chứa token của assembly được tham
chiếu, nghĩa là assembly được tham chiếu phải được tạo tên mạnh trước khi được tham chiếu.
Trong một môi trường phát triển mà assembly thường xuyên được xây dựng lại, mỗi người
phát triển và kiểm thử đều cần có quyền truy xuất cặp khóa tên mạnh của bạn—đây là một
nguy cơ bảo mật chủ yếu.
Thay vì phân phối khóa riêng cho mọi thành viên của nhóm phát triển, .NET Framework cung
cấp cơ chế hoãn việc ký một assembly (được gọi là delay signing), theo đó bạn có thể tạo tên
mạnh không hoàn chỉnh cho assembly (tạm gọi là tên mạnh bán phần). Tên mạnh bán phần
này chỉ chứa khóa công khai và token của khóa công khai (cần thiết để tham chiếu assembly),
nhưng chừa chỗ cho chữ ký sẽ được tạo ra từ khóa riêng sau này.
Khi quá trình phát triển hoàn tất, signing authority (người chịu trách nhiệm về việc bảo mật và
việc sử dụng cặp khóa tên mạnh) sẽ ký lại assembly đã bị hoãn trước đó để hoàn thành tên
mạnh cho nó. Chữ ký được tính toán dựa trên khóa riêng và được nhúng vào assembly, và giờ
đây bạn đã có thể phân phối assembly.
Khi hoãn việc ký một assembly, bạn chỉ cần truy xuất khóa công khai của cặp khóa tên mạnh.
Không có nguy cơ bảo mật nào từ việc phân phối khóa công khai, và signing authority phải
phân phối khóa công khai đến mọi thành viên của nhóm phát triển. Để trích xuất khóa công
khai từ file MyKeys.snk và ghi nó vào file MyPublicKey.snk, sử dụng lệnh

sn -p MyKeys.snk

MyPublicKey.snk

. Nếu bạn lưu trữ cặp khóa tên mạnh trong một kho chứa khóa CSP có tên là

MyKeys, sử dụng lệnh

sn -pc MyKeys MyPublicKey.snk

để trích xuất khóa công khai ra rồi

lưu trữ nó vào file MyPublicKey.snk.
Ví dụ dưới đây áp dụng các đặc tính đã được thảo luận trong mục 1.9 để khai báo phiên bản,
bản địa, và nơi chứa khóa công khai. Đồng thời áp dụng đặc tính

AssemblyDelaySign(true)

cho assembly để báo cho trình biên dịch biết bạn muốn trì hoãn việc ký assembly.

using System;

using System.Reflection;

[assembly:AssemblyKeyFile("MyPublicKey.snk")]

[assembly:AssemblyCulture("")]

[assembly:AssemblyVersion("1.0.0.0")]

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.