| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #!/usr/bin/perl
- use warnings;
- use strict;
- BEGIN {
- use File::Basename;
- use lib (dirname(__FILE__));
- }
- use Test::More;
- use nrpe;
- my @output;
- if (!supports_ssl()) {
- plan skip_all => 'SSL/TLS support unavailable.';
- }
- # SSLv3 may or may not be supported so we don't explicitly test it.
- my @SSL_Versions_Bad = ( 'TLSv1', 'TLSv1.1' );
- my @SSL_Versions_Good = ( 'SSLv3+', 'TLSv1+', 'TLSv1.1+', 'TLSv1.2', 'TLSv1.2+', 'TLSv1.3', 'TLSv1.3+' );
- plan tests => 10 + ((scalar @SSL_Versions_Bad + scalar @SSL_Versions_Good) * 2);
- ensure_daemon_running();
- switch_config_file("configs/ssl.cfg");
- restart_daemon();
- @output = `$checknrpe -H 127.0.0.1 -p 40321`;
- is($?, STATE_OK, 'connect ssl') || diag @output;
- like($output[0], qr/NRPE v.*/, 'connect ssl response') || diag @output;
- @output = `$checknrpe -H 127.0.0.1 -p 40321 -A configs/certs/nrpe.crt`;
- is($?, STATE_OK, 'connect ssl ca') || diag @output;
- like($output[0], qr/NRPE v.*/, 'connect ssl ca response') || diag @output;
- @output = `$checknrpe -H 127.0.0.1 -p 40321 -A configs/certs/nrpe.crt -C configs/certs/nrpe.crt -K configs/certs/nrpe.key`;
- is($?, STATE_OK, 'connect ssl cert') || diag @output;
- like($output[0], qr/NRPE v.*/, 'connect ssl cert response') || diag @output;
- @output = `$checknrpe -H 127.0.0.1 -p 40321 -A configs/certs/other.crt`;
- is($?, STATE_UNKNOWN, 'connect ssl other ca') || diag @output;
- like($output[0], qr/CHECK_NRPE: \(ssl_err != 5\) Error - Could not complete SSL handshake with/, 'connect ssl other ca response') || diag @output;
- # --log-file=logs/check_nrpe_ssl.log --ssl-logging=255
- # openssl: CHECK_NRPE: Error - Could not connect to .*
- # libressl: CHECK_NRPE: Error sending query to host.
- @output = `$checknrpe -H 127.0.0.1 -p 40321 -A configs/certs/nrpe.crt -C configs/certs/other.crt -K configs/certs/other.key`;
- is($?, STATE_UNKNOWN, 'connect ssl other cert') || diag @output;
- like($output[0], qr/CHECK_NRPE: Error /, 'connect ssl other cert response') || diag @output;
- foreach ( @SSL_Versions_Bad ) {
- my $ver = $_;
- @output = `$checknrpe -H 127.0.0.1 -p 40321 -A configs/certs/nrpe.crt -S $ver`;
- is($?, STATE_UNKNOWN, "connect ssl $ver") || diag @output;
- like($output[0], qr/CHECK_NRPE: \(ssl_err != 5\) Error - Could not complete SSL handshake with/, "connect ssl $ver response") || diag @output;
- }
- foreach ( @SSL_Versions_Good ) {
- my $ver = $_;
- @output = `$checknrpe -H 127.0.0.1 -p 40321 -A configs/certs/nrpe.crt -S $ver`;
- is($?, STATE_OK, "connect ssl $ver") || diag @output;
- like($output[0], qr/NRPE v.*/, "connect ssl $ver response") || diag @output;
- }
- done_testing();
|