美文网首页
OpenSSL的client端验证server端证书主机名

OpenSSL的client端验证server端证书主机名

作者: CodingCode | 来源:发表于2023-10-18 01:24 被阅读0次

利用openssl命令行client验证server

  1. 启动server
$ openssl s_server -accept 4443 -cert tls.pem -key tls.key -www
  1. client 验证
$ echo quit | openssl s_client -connect <yourserver>:4443 -CAfile ca.pem
...
    Start Time: 1697648561
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
DONE
  1. 验证主机名
$ echo quit | openssl s_client -connect <yourserver>:4443 -CAfile ca.pem -verify_hostname <hostname>

验证主机名(<hostname>)和证书里面定义的主机信息一致。注意证书的主机信息有两个来源:

  1. SUBJ域的CN字段
...
Subject: ..., CN=<hostname>
...
  1. 还有一个可以是SAN域
...
        X509v3 extensions:
            X509v3 Subject Alternative Name:
                DNS:<hostname>
  1. 本地验证

验证本地证书是否支持指定的主机名。

$ openssl x509  -noout -in tls.pem -checkhost <hostname>
Hostname <hostname> does [NOT] match certificate
  1. 验证结论

CN值:

  1. 可以至简单主机名,例如'$(hostname)'
  2. 可以是full-qualitied domain name,例如:'$(hostname -f)'
  3. 可以支持通配符'*',例如 '*.$(hostname -d)'

SAN值:
用法和CN值一样,但是SAN值会覆盖CNvalue,也就是说如果证书定义了SAN值,那么做主机名验证的时候就不会去访问CN的值;因此当主机名验证SAN域失败,此时即使主机名验证CN值成功,整个验证过程也是标记失败的。

Verify return code: 62 (Hostname mismatch)

相关文章

网友评论

      本文标题:OpenSSL的client端验证server端证书主机名

      本文链接:https://www.haomeiwen.com/subject/gawqidtx.html