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

时间:2011-09-21 08:53:16

标签: https openssl ssl sni

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

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

 
./config
make
make install

在构建此版本时,不确定是否需要提供任何其他配置参数。

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

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

谢谢!

3 个答案:

答案 0 :(得分:10)

这已经蛰伏了一段时间。因为我把它想象得很久,所以写下答案并给它一个闭包是合乎逻辑的。

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

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

以上命令将触发客户端hello的SNI扩展中存在给定服务器名称的TLS客户端。

答案 1 :(得分:3)

使用s_server可以使用命令:

openssl s_server -accept 443 -cert normal_cert.pem -key normal_key.ky -servername xyz.com -cert2 sni_cert.pem -key2 sni_key.ky

每当客户端请求没有servername扩展名的服务器时,服务器将使用normal_cert进行回复,如果servername扩展名为client hello,则服务器将使用sni_cert进行回复。

要将s_client与SNI一起使用,您可以使用以下命令:

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

答案 2 :(得分:2)

相关的命令行选项包括:

  • starttls prot:在为那些支持它的协议启动TLS之前使用STARTTLS命令,其中'prot'定义了哪一个。目前仅支持“smtp”,“pop3”,“imap”,“ftp”和“xmpp”。
  • servername host:设置TLS扩展名服务器名称