-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SROS2 demo using Keymint now not working with Fast RTPS #2
Comments
Ok, think I found three issues when comparing to
|
Yeah FastRTPS implement the xml checking more strictly (for the better!) it also lead to ros2/sros2#44, though a bit too strictly for some tags (eProsima/Fast-DDS#245). |
Ok, I solved the 3rd issue as well. Turns out fastrtps also checks to make sure the singing CA has the correct x509 extensions configured for a CA, e.g.: x509_extensions: # https://access.redhat.com/documentation/en-US/Red_Hat_Certificate_System/8.0/html/Admin_Guide/Standard_X.509_v3_Certificate_Extensions.html
BasicConstraints: # This extension is used during the certificate chain verification process to identify CA certificates and to apply certificate chain path length constraints
critical: True # PKIX Part 1 requires that this extension be marked critical. This extension is evaluated regardless of its criticality
value:
ca: True
path_length: 1 # max length of CA chain tat could extend from current cert Perhaps connext should also be doing this 🤔 ! Although it doesn't seem fastrtps requires it to be critical to be set to True, which really messes with my head given TLS requires this; additionally, why bother erroring out due to the I guess this enlarges the certificate payloads over the wire with one more x509 extension, but perhaps it warranted. I just don't see this requirement stated in the speck, or it could be implicit from
Perhaps we could ping some connext and fastrtps folks? |
to satisfy fastrtps ruffsl/ros2_docker_demos#2
Ok, so fastrtps is working now for the most part using these latest generated files: However, when attempting to ros launch talker_listener or add_two_ints, I get a very verbose output about decoding submessage errors:
|
@mikaelarguedas , any idea about the FastRTP errors:
Because of the level of real DDS traffic on the turtlebot3, those error messages (spamming to stdout, not stderr) can push the raspberry pie over the edge in memory usage when leaving a sros2 node running for too long, even when piping it all to /dev/null as a temp workaround. Not just keyment too, as using sros secure cli to generate the security artifacts will render the same results when using |
I faced that issue recently too and I agree that they are flooding the console when you start having a big system. I didn't get a chance to track down why these errors are printed. |
Looking in Fast-RTPS/src/cpp/rtps/security/SecurityManager.cpp I see only a few places where AESGCMGMAC_Transform::decode_datawriter_submessage returns false without issuing additional logError messages. I suspect deserialize_SecureDataTag is that case But how can I be sure I'm have logWarning enabled at runtime? It looks like they should be enabled with release, but I'm not sure I have it configured: |
It can be configured using the |
Sorry for the delay. I see the mention today. I think those message are printed because reader and writer haven't exchange cryptographic keys yet, and reader is receiving already data from the writer and it cannot decrypt it. Maybe those messages should be warnings instead of errors. |
As of dafae39 , it seems that what works find for
rmw_connext_cpp
is not working forrmw_fastrtps_cpp
. When attempting to use the keystore generated by the keymint script,rmw_connext_cpp
will generate the following error:To reproduce, simply follow along with the README.md, but take note to enable the approrate environment verables in the docker-compose.yml to enable security and the appropriate
RMW_IMPLEMENTATION
. You can comment outnetwork_mode: "host"
to avoid broadcasting in your local networks.Depending on which script you use,
keystore_setup.bash
will do fine, yetkeymint_setup.bash
will lead to the error above, presumably due to the tighter permission it compiles as opposed tokeystore_setup.bash
use of wildcards.ping @mikaelarguedas
The text was updated successfully, but these errors were encountered: