0005-S2S-TLS-OpenSSL-Always-setup-host-name-verification.patch 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. From 3ec63bec484149255268e691f29d4784177bc0ce Mon Sep 17 00:00:00 2001
  2. From: Alexander Barton <alex@barton.de>
  3. Date: Mon, 1 Jan 2024 19:58:35 +0100
  4. Subject: [PATCH 05/20] S2S-TLS/OpenSSL: Always setup host name verification
  5. Setup host name verification even when the "SSLVerify" option is
  6. disabled, because even then the peer can present a valid certificate and
  7. validation would always(!) fail because of the missing host name
  8. verification setup.
  9. (cherry picked from commit 84b019b11f761b71c8239d60e7f8db0b82a55df3)
  10. ---
  11. src/ngircd/conn-ssl.c | 28 +++++++++++++++-------------
  12. 1 file changed, 15 insertions(+), 13 deletions(-)
  13. --- a/src/ngircd/conn-ssl.c
  14. +++ b/src/ngircd/conn-ssl.c
  15. @@ -671,25 +671,27 @@
  16. if (!ret)
  17. return false;
  18. Conn_OPTION_ADD(c, CONN_SSL_CONNECT);
  19. +
  20. #ifdef HAVE_LIBSSL
  21. assert(c->ssl_state.ssl);
  22. - if (s->SSLVerify) {
  23. - X509_VERIFY_PARAM *param = NULL;
  24. - param = SSL_get0_param(c->ssl_state.ssl);
  25. - X509_VERIFY_PARAM_set_hostflags(param,
  26. - X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);
  27. - int err = X509_VERIFY_PARAM_set1_host(param, s->host, 0);
  28. - if (err != 1) {
  29. - Log(LOG_ERR,
  30. - "Cannot set up hostname verification for '%s': %u",
  31. - s->host, err);
  32. - return false;
  33. - }
  34. +
  35. + X509_VERIFY_PARAM *param = SSL_get0_param(c->ssl_state.ssl);
  36. + X509_VERIFY_PARAM_set_hostflags(param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);
  37. + int err = X509_VERIFY_PARAM_set1_host(param, s->host, 0);
  38. + if (err != 1) {
  39. + Log(LOG_ERR,
  40. + "Cannot set up hostname verification for '%s': %u",
  41. + s->host, err);
  42. + return false;
  43. + }
  44. +
  45. + if (s->SSLVerify)
  46. SSL_set_verify(c->ssl_state.ssl, SSL_VERIFY_PEER,
  47. Verify_openssl);
  48. - } else
  49. + else
  50. SSL_set_verify(c->ssl_state.ssl, SSL_VERIFY_NONE, NULL);
  51. #endif
  52. +
  53. return true;
  54. }