小编Che*_*esy的帖子

如何验证服务器主机名

我正在使用Indy TIdHTTP(随XE2一起提供)和OpenSSL库DLL V1.0.1m在通过HTTPS连接时验证证书.我已经为组件的OnVerifyPeer事件实现了一个事件处理程序TIdSSLIOHandlerSocketOpenSSL.

function TForm1.IdSSLIOHandlerSocketOpenSSL1VerifyPeer(Certificate: TIdX509;
  AOk: Boolean; ADepth, AError: Integer): Boolean;
begin
  (...)
end;
Run Code Online (Sandbox Code Playgroud)

根据RFC 2818第3.1章,如果客户端可以使用主机名,客户端必须根据服务器证书消息中提供的服务器身份进行检查,以防止中间人攻击.

现在我有一个问题是验证服务器证书的主机名:

虽然服务器证书(*.google.com)中"主题"字段的"公用名"(CN)字段中存在通配符,但Certificate.Subject.OneLineOnVerifyPeer事件的参数将返回没有任何通配符的CN(即google.com而不是*.google .COM).

如RFC 2818第3.1章所述.通配符*用于匹配任何单个域名组件或组件片段.

  1. 任何人都可以确认Indy或OpenSSL库删除了通配符,尽管有必要验证主机名吗?

  2. 有没有人想在这些情况下验证主机名?

任何帮助是极大的赞赏.谢谢阅读.

delphi ssl openssl certificate indy

5
推荐指数
1
解决办法
1422
查看次数

标签 统计

certificate ×1

delphi ×1

indy ×1

openssl ×1

ssl ×1