重新协商SSL握手

时间:2013-03-19 15:38:03

标签: c ssl sip

当前SSL连接保持活动状态时,是否可以重新协商SSL握手。当新握手成功时,服务器应该响应新握手的确认。

我搜索过SSL重新协商但我找不到具体的东西。有谁知道这样的事情是否可能?

2 个答案:

答案 0 :(得分:2)

是的,重新谈判是TLS协议的一部分。它可以是客户端和服务器启动的。对它的支持取决于实施。此外,重新协商使TLS attack成为可能。

答案 1 :(得分:0)

前段时间我已经遇到这种情况,我们正在使用GoLang。 可以通过将tlsCfg.Renegotiation设置为以下值之一来设置重新协商模式:

  1. 永远不要重新谈判
  2. RenegotiateOnceAsClient
  3. RenegotiateFreelyAsClient 在https://golang.org/src/crypto/tls/common.go
  4. 中定义

以下功能可用于设置请求TLS配置。

func (r *request) SetRenegotiationMode(mode string) (IRequest, error) {

    modeMap := map[string]tls.RenegotiationSupport{
        "once":   tls.RenegotiateOnceAsClient,
        "freely": tls.RenegotiateFreelyAsClient,
        "never":  tls.RenegotiateNever,
    }

    if val, ok := modeMap[mode]; ok {
        if r.tlsCfg == nil {
            r.tlsCfg = &tls.Config{}
        }
        r.tlsCfg.Renegotiation = val
    } else {
        //if anything other than the allowed values is passed, it'll thrown an error
        return nil, <DEFINE AN ERROR>
    }

    return r, nil
}