Tôi đã tạo ra tự ký cấp giấy chứng nhận của tôi và cài đặt nó vào thư mục gốc Trusted khách hàng của tôi và sử dụng để .PFX [server side] để xác nhận chứng nhận đó và xác thực đang diễn ra suôn sẻ mà không cần bất kỳ lỗi nàoCó ai có thể tạo chứng nhận giả không?
Nhưng có một câu hỏi mà thực sự nhầm lẫn với tôi là có bất kỳ cách nào cho một hacker giả mạo xác thực với khách hàng của tôi? với cert và server giả của anh ta?
Ví dụ:
Mã của tôi để xác nhận việc xác nhận là
private static bool OnCertificateValidation(
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
{
if (CaVerify(chain) && ServerVerify(certificate)) return true;
}
return false;
}
public static bool CaVerify(X509Chain chain)
{
if (chain.ChainElements.Count > 0)
{
var certHash = chain.ChainElements[chain.ChainElements.Count - 1].Certificate.GetCertHash();
if (certHash.Length == ApiCertHash.Length)
{
for (var idx = 0; idx < certHash.Length; idx++)
{
if (certHash[idx] == ApiCertHash[idx])
{
return true;
}
}
}
}
return false;
}
public static bool ServerVerify(X509Certificate certificate)
{
var certHash = certificate.GetCertHash();
if (certHash.Length == ApiCertHash.Length)
{
for (var idx = 0; idx < certHash.Length; idx++)
{
if (certHash[idx] == ApiCertHash[idx])
{
return true;
}
}
}
return false;
}
Vì vậy, có thể một số một tạo ra một certification.pfx giả và kết hợp nó vào máy chủ giả mạo của mình và kết nối khách hàng của tôi đến máy chủ giả của mình?
Có ông có thể, * trên máy tính của mình chỉ * . Đó sẽ không phải là "Main In the Middle", kẻ tấn công kiểm soát điểm cuối, không có gì nhiều bạn có thể làm về điều đó. Bạn có thể đặt dấu vân tay của các CERT, nhưng một ý tưởng thông minh hơn sẽ được đặt dấu vân tay của các CA trong và kiểm tra xem, như vậy bạn có thể cấp giấy chứng nhận mới (nói rằng bạn cần phải thay đổi tên DNS bạn đang kết nối, bạn sẽ cần một cert mới và có một dấu vân tay cert mới). Tôi sẽ thêm một số mã nhanh để hiển thị như thế nào. –
Vì vậy, Ssl chỉ là để bảo vệ máy khách-máy chủ của tôi khỏi tấn công MITM chứ không phải từ việc kiểm soát EndPoint của khách hàng của tôi? –
Không thể bảo vệ điểm cuối. Nếu người dùng cuối có thể chạy mã tùy ý, bạn đã mất. Tất cả kẻ tấn công phải làm là đính kèm trình gỡ lỗi của riêng mình và họ có thể làm bất cứ điều gì họ muốn với chương trình đang chạy. Bạn có thể làm cho nó khó khăn trên chúng, nhưng bạn không thể ngăn chặn nó. Cách duy nhất để "Ngừng" là người dùng cuối không được phép chạy bất cứ thứ gì họ muốn. Một ví dụ về điều này là một ** un-jailbroken ** iPhone, một người dùng chỉ có thể chạy các ứng dụng từ cửa hàng ứng dụng, và cửa hàng không có công cụ gỡ lỗi, do đó, cho người dùng cuối không thể tấn công chương trình. Nhưng nếu jailbroken ... bạn là nơi bạn bắt đầu, không thể ngăn chặn nó. –