-
-
Notifications
You must be signed in to change notification settings - Fork 380
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Specify DTLS handshake cipher suite? #1333
Comments
Aha, thanks. Everything works if I specify the cipher manually: diff --git a/src/impl/dtlstransport.cpp b/src/impl/dtlstransport.cpp
index e2c389bf..3ef82d98 100644
--- a/src/impl/dtlstransport.cpp
+++ b/src/impl/dtlstransport.cpp
@@ -761,7 +761,7 @@ DtlsTransport::DtlsTransport(shared_ptr<IceTransport> lower, certificate_ptr cer
CertificateCallback);
SSL_CTX_set_verify_depth(mCtx, 1);
- openssl::check(SSL_CTX_set_cipher_list(mCtx, "ALL:!LOW:!EXP:!RC4:!MD5:@STRENGTH"),
+ openssl::check(SSL_CTX_set_cipher_list(mCtx, "ECDHE-ECDSA-AES128-GCM-SHA256"),
"Failed to set SSL priorities");
#if OPENSSL_VERSION_NUMBER >= 0x30000000 Would you accept a PR that makes it configurable? |
There's some interesting discussion here too - it seems the default list of ciphers is big enough to cause fragmentation of the Client Hello message - I haven't verified this but if that's the case it might be sensible to restrict the list of supported ciphers? Chrome's list is here, though this list is slightly smaller and doesn't cause fragmentation: SSL_CTX_set_cipher_list(
ctx, "ALL:!SHA256:!SHA384:!aPSK:!ECDSA+SHA1:!ADH:!LOW:!EXP:!MD5:!3DES:!SSLv3:!TLSv1"); This list would probably not need to be configurable. |
Thank you for investigating, I think it would make sense to restrict the list. Making it configurable would be a bit complex because the setting would need to be generic and translated for each TLS library. |
Reduces the number of supported ciphers to ensure Client Hello messages are not fragmented, `ECDHE-ECDSA-AES128-GCM-SHA256` takes priority and older insecure ciphers are not used. Fixes paullouisageneau#1333
Great, I've opened #1335 |
I'm trying to integrate with webtrc-rs, a rewrite of Pion in Rust.
I can dial webrtc-rs -> libdatachannel ok, that works.
If I dial libdatachannel -> webrtc-rs it gets stuck on the DTLS handshake.
The logs I see on the Rust side are:
Interestingly if I dial webrtc-rs -> webrtc-rs it works but I see a different cipher suite:
Chrome causes the same cipher suite to be logged:
...as does Firefox:
I'd like to try aligning the cipher suite used by libdatachannel with the one used by webrtc-rs to rule out this being the cause of the incompatibility, but I can't see an option.
Is it possible to specify what cipher suite to use?
The text was updated successfully, but these errors were encountered: