Ensure that a certificate that was not generated using the certificate authority is still allowed to communicate as long as the LIBPROCESS_SSL_VERIFY_SERVER_CERT and LIBPROCESS_SSL_REQUIRE_CLIENT_CERT flags are disabled.
| 219 | // the LIBPROCESS_SSL_VERIFY_SERVER_CERT and LIBPROCESS_SSL_REQUIRE_CLIENT_CERT |
| 220 | // flags are disabled. |
| 221 | TEST_P(SSLTestStringParameter, NoVerifyBadCA) |
| 222 | { |
| 223 | Try<Socket> server = setup_server({ |
| 224 | {"LIBPROCESS_SSL_ENABLED", "true"}, |
| 225 | {"LIBPROCESS_SSL_KEY_FILE", key_path().string()}, |
| 226 | {"LIBPROCESS_SSL_CERT_FILE", certificate_path().string()}, |
| 227 | {"LIBPROCESS_SSL_REQUIRE_CLIENT_CERT", "false"}, |
| 228 | {"LIBPROCESS_SSL_HOSTNAME_VALIDATION_SCHEME", GetParam()}}); |
| 229 | ASSERT_SOME(server); |
| 230 | |
| 231 | Try<Subprocess> client = launch_client({ |
| 232 | {"LIBPROCESS_SSL_ENABLED", "true"}, |
| 233 | {"LIBPROCESS_SSL_KEY_FILE", scrap_key_path().string()}, |
| 234 | {"LIBPROCESS_SSL_CERT_FILE", scrap_certificate_path().string()}, |
| 235 | {"LIBPROCESS_SSL_VERIFY_SERVER_CERT", "false"}, |
| 236 | {"LIBPROCESS_SSL_CA_FILE", certificate_path().string()}, |
| 237 | {"LIBPROCESS_SSL_HOSTNAME_VALIDATION_SCHEME", GetParam()}}, |
| 238 | server.get(), |
| 239 | true); |
| 240 | ASSERT_SOME(client); |
| 241 | |
| 242 | Future<Socket> socket = server->accept(); |
| 243 | AWAIT_ASSERT_READY(socket); |
| 244 | |
| 245 | // TODO(jmlvanre): Remove const copy. |
| 246 | AWAIT_ASSERT_EQ(data, Socket(socket.get()).recv()); |
| 247 | AWAIT_ASSERT_READY(Socket(socket.get()).send(data)); |
| 248 | |
| 249 | AWAIT_ASSERT_READY(await_subprocess(client.get(), 0)); |
| 250 | } |
| 251 | |
| 252 | |
| 253 | // Ensure that a client certificate that was not generated using the |
nothing calls this directly
no test coverage detected