Https Openssl TLS扩展支持配置(服务器名称指示)

Https Openssl TLS扩展支持配置(服务器名称指示),https,openssl,ssl,sni,Https,Openssl,Ssl,Sni,我想将openssl客户端服务器配置为支持TLS扩展,特别是服务器名称指示(SNI) 我在ubuntu linux上构建了最新的openssl 1.0.0e,没有提供任何额外的配置参数 ./config make make install /配置 制作 安装 不确定在构建此版本时是否需要提供任何其他配置参数 现在,我已经设置了服务器,并使用openssl提供的标准命令行工具,即s_客户端和s_服务器,通过openssl客户端连接到服务器 我的问题是:如何在s_客户端中指定要作为扩展发送的主机名?

我想将openssl客户端服务器配置为支持TLS扩展,特别是服务器名称指示(SNI)

我在ubuntu linux上构建了最新的openssl 1.0.0e,没有提供任何额外的配置参数

./config make make install /配置 制作 安装 不确定在构建此版本时是否需要提供任何其他配置参数

现在,我已经设置了服务器,并使用openssl提供的标准命令行工具,即s_客户端和s_服务器,通过openssl客户端连接到服务器

我的问题是:如何在s_客户端中指定要作为扩展发送的主机名?openssl是否有使用命令行中的某些参数指定服务器名称的规定


谢谢

相关命令行选项包括:

  • starttls-prot
    :在为支持它的协议启动TLS之前,使用starttls命令,其中“prot”定义了要采用的协议。目前只支持“smtp”、“pop3”、“imap”、“ftp”和“xmpp”
  • servername主机
    :设置TLS扩展servername

    • 这已经休眠了一段时间。因为我很久以前就发现了这个问题,所以写下答案并结束这个问题是合乎逻辑的

      命令行选项
      servername
      可用于指定SNI

      openssl s_client -connect myweb.address.com:443 -servername myweb.address.com
      

      上述命令将使用客户端hello的SNI扩展中提供的给定服务器名触发TLS客户端。

      要使用s_服务器,可以使用以下命令:

      openssl s_服务器-accept 443-cert normal_cert.pem-key normal_key.ky-servername xyz.com-cert2 sni_cert.pem-key2 sni_key.ky

      在这里,每当客户端请求不带servername扩展名的服务器时,服务器将使用普通证书进行回复,如果有servername扩展名为client hello,则服务器将使用sni\u证书进行回复

      要将s_客户端与SNI一起使用,可以使用以下命令:


      openssl s_client-servername xyz.com-connect ip:port

      您知道哪个版本的openssl添加了
      -servername
      参数吗?它似乎不存在于OpenSSL 1.0.0h中。我使用的是这个版本
      OpenSSL 0.9.8o 2010年6月1日
      我错了——OpenSSL 1.0.0h确实支持
      -servername
      ,如果您查看
      OpenSSL s_客户端-h
      的输出可以看出这一点。它只是没有记录在s_客户端手册页中。请在OpenSSL中搜索
      SSL\u set\u tlsext\u host\u name
      。它显示在“0.9.8n和1.0.0之间的变化(2010年3月29日)”下。