1

現在のSSL接続がアクティブなままでSSLハンドシェイクの再ネゴシエーションを実行することは可能ですか。新しいハンドシェイクが成功すると、サーバーは新しいハンドシェイクの確認で応答する必要があります。

SSL再ネゴシエーションを検索しましたが、具体的なものは見つかりませんでした。このようなことが可能かどうか誰かが知っていますか?

4

2 に答える 2

2

はい、再ネゴシエーションはTLSプロトコルの一部です。クライアントとサーバーの両方で開始できます。サポートは実装によって異なります。また、再ネゴシエーションによりTLSへの攻撃が可能になりました。

于 2013-03-19T16:16:17.957 に答える
0

私はしばらく前にこの状況に直面し、GoLangを使用していました。再ネゴシエートモードは、tlsCfg.Renegotiationを次のいずれかの値に設定することで設定できます。

  1. 再交渉することはありません
  2. RenegotiateOnceAsClient
  3. https://golang.org/src/crypto/tls/common.goで定義されているRenegotiateFreelyAsClient

次の関数を使用して、要求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
}
于 2019-09-27T06:00:56.133 に答える