Skip to content

Not honoring D.4. Middlebox Compatibility Mode #200

@WernerWenz

Description

@WernerWenz

As per RFC an arbitrary number of (empty, unencrypted) change_cipher_spec records may be send during the handshake.
Most clients will most likeley use this feature in order to increase chances for successfully establishing a TLS connection over the Internet.
OpenSSL s_client and TLS-tris for example do so and thus currently are not compatible.

Fixing might be possible at

switch RecordType(header[0]) {

However, while enabling connections from OpenSSL/tris, a simple

func (r *DefaultRecordLayer) nextRecord(allowOldEpoch bool) (*TLSPlaintext, error) {
again:
....
case RecordTypeChangeCipherSpec:
   goto again

would not be sufficient as these records must only occur unencrypted during the handshake (before the client finished).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions