4
0

020-ssl.t 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4. BEGIN {
  5. use File::Basename;
  6. use lib (dirname(__FILE__));
  7. }
  8. use Test::More;
  9. use nrpe;
  10. my @output;
  11. if (!supports_ssl()) {
  12. plan skip_all => 'SSL/TLS support unavailable.';
  13. }
  14. # SSLv3 may or may not be supported so we don't explicitly test it.
  15. my @SSL_Versions_Bad = ( 'TLSv1', 'TLSv1.1' );
  16. my @SSL_Versions_Good = ( 'SSLv3+', 'TLSv1+', 'TLSv1.1+', 'TLSv1.2', 'TLSv1.2+', 'TLSv1.3', 'TLSv1.3+' );
  17. plan tests => 10 + ((scalar @SSL_Versions_Bad + scalar @SSL_Versions_Good) * 2);
  18. ensure_daemon_running();
  19. switch_config_file("configs/ssl.cfg");
  20. restart_daemon();
  21. @output = `$checknrpe -H 127.0.0.1 -p 40321`;
  22. is($?, STATE_OK, 'connect ssl') || diag @output;
  23. like($output[0], qr/NRPE v.*/, 'connect ssl response') || diag @output;
  24. @output = `$checknrpe -H 127.0.0.1 -p 40321 -A configs/certs/nrpe.crt`;
  25. is($?, STATE_OK, 'connect ssl ca') || diag @output;
  26. like($output[0], qr/NRPE v.*/, 'connect ssl ca response') || diag @output;
  27. @output = `$checknrpe -H 127.0.0.1 -p 40321 -A configs/certs/nrpe.crt -C configs/certs/nrpe.crt -K configs/certs/nrpe.key`;
  28. is($?, STATE_OK, 'connect ssl cert') || diag @output;
  29. like($output[0], qr/NRPE v.*/, 'connect ssl cert response') || diag @output;
  30. @output = `$checknrpe -H 127.0.0.1 -p 40321 -A configs/certs/other.crt`;
  31. is($?, STATE_UNKNOWN, 'connect ssl other ca') || diag @output;
  32. like($output[0], qr/CHECK_NRPE: \(ssl_err != 5\) Error - Could not complete SSL handshake with/, 'connect ssl other ca response') || diag @output;
  33. # --log-file=logs/check_nrpe_ssl.log --ssl-logging=255
  34. # openssl: CHECK_NRPE: Error - Could not connect to .*
  35. # libressl: CHECK_NRPE: Error sending query to host.
  36. @output = `$checknrpe -H 127.0.0.1 -p 40321 -A configs/certs/nrpe.crt -C configs/certs/other.crt -K configs/certs/other.key`;
  37. is($?, STATE_UNKNOWN, 'connect ssl other cert') || diag @output;
  38. like($output[0], qr/CHECK_NRPE: Error /, 'connect ssl other cert response') || diag @output;
  39. foreach ( @SSL_Versions_Bad ) {
  40. my $ver = $_;
  41. @output = `$checknrpe -H 127.0.0.1 -p 40321 -A configs/certs/nrpe.crt -S $ver`;
  42. is($?, STATE_UNKNOWN, "connect ssl $ver") || diag @output;
  43. like($output[0], qr/CHECK_NRPE: \(ssl_err != 5\) Error - Could not complete SSL handshake with/, "connect ssl $ver response") || diag @output;
  44. }
  45. foreach ( @SSL_Versions_Good ) {
  46. my $ver = $_;
  47. @output = `$checknrpe -H 127.0.0.1 -p 40321 -A configs/certs/nrpe.crt -S $ver`;
  48. is($?, STATE_OK, "connect ssl $ver") || diag @output;
  49. like($output[0], qr/NRPE v.*/, "connect ssl $ver response") || diag @output;
  50. }
  51. done_testing();