scripts/ocsp-stapling2.test: eliminate races.

This commit is contained in:
Daniel Pouzzner
2020-09-16 01:35:05 -05:00
parent d22de947b7
commit 26901d1cd9

View File

@@ -24,7 +24,7 @@ if [ $? -eq 0 ]; then
exit 0 exit 0
fi fi
PARENTDIR=`pwd` PARENTDIR="$PWD"
# create a unique workspace directory ending in PID for the script instance ($$) # create a unique workspace directory ending in PID for the script instance ($$)
# to make this instance orthogonal to any others running, even on same repo. # to make this instance orthogonal to any others running, even on same repo.
@@ -134,7 +134,7 @@ create_new_cnf() {
mv $test_cnf $CERT_DIR/$test_cnf mv $test_cnf $CERT_DIR/$test_cnf
cd $CERT_DIR cd $CERT_DIR
CURR_LOC=`pwd` CURR_LOC="$PWD"
printf '%s\n' "echo now in $CURR_LOC" printf '%s\n' "echo now in $CURR_LOC"
./renewcerts-for-test.sh $test_cnf ./renewcerts-for-test.sh $test_cnf
cd $WORKSPACE cd $WORKSPACE
@@ -186,8 +186,8 @@ trap cleanup EXIT INT TERM HUP
[ ! -x ./examples/client/client ] && echo -e "\n\nClient doesn't exist" && exit 1 [ ! -x ./examples/client/client ] && echo -e "\n\nClient doesn't exist" && exit 1
# check if supported key size is large enough to handle 4096 bit RSA # check if supported key size is large enough to handle 4096 bit RSA
size=`./examples/client/client '-?' | grep "Max RSA key"` size="$(./examples/client/client '-?' | grep "Max RSA key")"
size=`echo ${size//[^0-9]/}` size="${size//[^0-9]/}"
if [ ! -z "$size" ]; then if [ ! -z "$size" ]; then
printf 'check on max key size of %d ...' $size printf 'check on max key size of %d ...' $size
if [ $size -lt 4096 ]; then if [ $size -lt 4096 ]; then
@@ -258,21 +258,17 @@ if [ ! -f $ready_file4 ]; then
exit 1 exit 1
fi fi
RPORTSELECTED1=`cat $ready_file1`
RPORTSELECTED2=`cat $ready_file2`
RPORTSELECTED3=`cat $ready_file3`
RPORTSELECTED4=`cat $ready_file4`
printf '%s\n' "------------- PORTS ---------------" printf '%s\n' "------------- PORTS ---------------"
printf '%s' "Random ports selected: $RPORTSELECTED1 $RPORTSELECTED2" printf '%s' "Random ports selected: $port1 $port2"
printf '%s\n' " $RPORTSELECTED3 $RPORTSELECTED4" printf '%s\n' " $port3 $port4"
printf '%s\n' "-----------------------------------" printf '%s\n' "-----------------------------------"
# Use client connections to cleanly shutdown the servers # Use client connections to cleanly shutdown the servers
./examples/client/client -p $RPORTSELECTED1 ./examples/client/client -p $port1
./examples/client/client -p $RPORTSELECTED2 ./examples/client/client -p $port2
./examples/client/client -p $RPORTSELECTED3 ./examples/client/client -p $port3
./examples/client/client -p $RPORTSELECTED4 ./examples/client/client -p $port4
create_new_cnf $RPORTSELECTED1 $RPORTSELECTED2 $RPORTSELECTED3 \ create_new_cnf $port1 $port2 $port3 \
$RPORTSELECTED4 $port4
sleep 0.1 sleep 0.1
@@ -280,7 +276,7 @@ sleep 0.1
# OLD: ./certs/ocsp/ocspd-root-ca-and-intermediate-cas.sh & # OLD: ./certs/ocsp/ocspd-root-ca-and-intermediate-cas.sh &
# NEW: openssl isn't being cleaned up, invoke directly in script for cleanup # NEW: openssl isn't being cleaned up, invoke directly in script for cleanup
# purposes! # purposes!
openssl ocsp -port $RPORTSELECTED1 -nmin 1 \ openssl ocsp -port $port1 -nmin 1 \
-index certs/ocsp/index-ca-and-intermediate-cas.txt \ -index certs/ocsp/index-ca-and-intermediate-cas.txt \
-rsigner certs/ocsp/ocsp-responder-cert.pem \ -rsigner certs/ocsp/ocsp-responder-cert.pem \
-rkey certs/ocsp/ocsp-responder-key.pem \ -rkey certs/ocsp/ocsp-responder-key.pem \
@@ -291,7 +287,7 @@ openssl ocsp -port $RPORTSELECTED1 -nmin 1 \
# OLD: ./certs/ocsp/ocspd-intermediate2-ca-issued-certs.sh & # OLD: ./certs/ocsp/ocspd-intermediate2-ca-issued-certs.sh &
# NEW: openssl isn't being cleaned up, invoke directly in script for cleanup # NEW: openssl isn't being cleaned up, invoke directly in script for cleanup
# purposes! # purposes!
openssl ocsp -port $RPORTSELECTED2 -nmin 1 \ openssl ocsp -port $port2 -nmin 1 \
-index certs/ocsp/index-intermediate2-ca-issued-certs.txt \ -index certs/ocsp/index-intermediate2-ca-issued-certs.txt \
-rsigner certs/ocsp/ocsp-responder-cert.pem \ -rsigner certs/ocsp/ocsp-responder-cert.pem \
-rkey certs/ocsp/ocsp-responder-key.pem \ -rkey certs/ocsp/ocsp-responder-key.pem \
@@ -302,7 +298,7 @@ openssl ocsp -port $RPORTSELECTED2 -nmin 1 \
# OLD: ./certs/ocsp/ocspd-intermediate3-ca-issued-certs.sh & # OLD: ./certs/ocsp/ocspd-intermediate3-ca-issued-certs.sh &
# NEW: openssl isn't being cleaned up, invoke directly in script for cleanup # NEW: openssl isn't being cleaned up, invoke directly in script for cleanup
# purposes! # purposes!
openssl ocsp -port $RPORTSELECTED3 -nmin 1 \ openssl ocsp -port $port3 -nmin 1 \
-index certs/ocsp/index-intermediate3-ca-issued-certs.txt \ -index certs/ocsp/index-intermediate3-ca-issued-certs.txt \
-rsigner certs/ocsp/ocsp-responder-cert.pem \ -rsigner certs/ocsp/ocsp-responder-cert.pem \
-rkey certs/ocsp/ocsp-responder-key.pem \ -rkey certs/ocsp/ocsp-responder-key.pem \
@@ -320,10 +316,10 @@ printf '%s\n\n' "------------- TEST CASE 1 SHOULD PASS ------------------------"
./examples/server/server -c certs/ocsp/server3-cert.pem \ ./examples/server/server -c certs/ocsp/server3-cert.pem \
-k certs/ocsp/server3-key.pem -R $ready_file5 \ -k certs/ocsp/server3-key.pem -R $ready_file5 \
-p $port5 & -p $port5 &
wait_for_readyFile $ready_file5 server_pid5=$!
CLI_PORT=`cat $ready_file5` wait_for_readyFile $ready_file5 $server_pid5 $port5
./examples/client/client -C -A certs/ocsp/root-ca-cert.pem -W 2 -v 3 \ ./examples/client/client -C -A certs/ocsp/root-ca-cert.pem -W 2 -v 3 \
-p $CLI_PORT -p $port5
RESULT=$? RESULT=$?
[ $RESULT -ne 0 ] && printf '\n\n%s\n' "Client connection 1 failed" && exit 1 [ $RESULT -ne 0 ] && printf '\n\n%s\n' "Client connection 1 failed" && exit 1
printf '%s\n\n' "Test PASSED!" printf '%s\n\n' "Test PASSED!"
@@ -348,10 +344,10 @@ remove_single_rF $ready_file5
./examples/server/server -c certs/ocsp/server4-cert.pem \ ./examples/server/server -c certs/ocsp/server4-cert.pem \
-k certs/ocsp/server4-key.pem -R $ready_file5 \ -k certs/ocsp/server4-key.pem -R $ready_file5 \
-p $port5 & -p $port5 &
wait_for_readyFile $ready_file5 server_pid5=$!
CLI_PORT=`cat $ready_file5` wait_for_readyFile $ready_file5 $server_pid5 $port5
./examples/client/client -C -A certs/ocsp/root-ca-cert.pem -W 2 -v 3 \ ./examples/client/client -C -A certs/ocsp/root-ca-cert.pem -W 2 -v 3 \
-p $CLI_PORT -p $port5
RESULT=$? RESULT=$?
[ $RESULT -ne 1 ] && printf '\n\n%s\n' "Client connection succeeded $RESULT" && exit 1 [ $RESULT -ne 1 ] && printf '\n\n%s\n' "Client connection succeeded $RESULT" && exit 1
printf '%s\n\n' "Test successfully REVOKED!" printf '%s\n\n' "Test successfully REVOKED!"
@@ -362,9 +358,8 @@ remove_single_rF $ready_file5
-k certs/ocsp/server4-key.pem -R $ready_file5 \ -k certs/ocsp/server4-key.pem -R $ready_file5 \
-p $port5 & -p $port5 &
sleep 0.1 sleep 0.1
CLI_PORT=`cat $ready_file5`
./examples/client/client -C -A certs/ocsp/root-ca-cert.pem -W 3 -v 3 \ ./examples/client/client -C -A certs/ocsp/root-ca-cert.pem -W 3 -v 3 \
-p $CLI_PORT -p $port5
RESULT=$? RESULT=$?
[ $RESULT -ne 1 ] && printf '\n\n%s\n' "Client connection succeeded $RESULT" && exit 1 [ $RESULT -ne 1 ] && printf '\n\n%s\n' "Client connection succeeded $RESULT" && exit 1
printf '%s\n\n' "Test successfully REVOKED!" printf '%s\n\n' "Test successfully REVOKED!"
@@ -375,10 +370,10 @@ remove_single_rF $ready_file5
./examples/server/server -c certs/ocsp/server5-cert.pem \ ./examples/server/server -c certs/ocsp/server5-cert.pem \
-k certs/ocsp/server5-key.pem -R $ready_file5 \ -k certs/ocsp/server5-key.pem -R $ready_file5 \
-p $port5 & -p $port5 &
wait_for_readyFile $ready_file5 server_pid5=$!
CLI_PORT=`cat $ready_file5` wait_for_readyFile $ready_file5 $server_pid5 $port5
./examples/client/client -C -A certs/ocsp/root-ca-cert.pem -W 2 -v 3 \ ./examples/client/client -C -A certs/ocsp/root-ca-cert.pem -W 2 -v 3 \
-p $CLI_PORT -p $port5
RESULT=$? RESULT=$?
[ $RESULT -ne 0 ] && printf '\n\n%s\n' "Client connection 3 failed $RESULT" && exit 1 [ $RESULT -ne 0 ] && printf '\n\n%s\n' "Client connection 3 failed $RESULT" && exit 1
printf '%s\n\n' "Test PASSED!" printf '%s\n\n' "Test PASSED!"
@@ -388,10 +383,10 @@ remove_single_rF $ready_file5
./examples/server/server -c certs/ocsp/server5-cert.pem \ ./examples/server/server -c certs/ocsp/server5-cert.pem \
-k certs/ocsp/server5-key.pem -R $ready_file5 \ -k certs/ocsp/server5-key.pem -R $ready_file5 \
-p $port5 & -p $port5 &
wait_for_readyFile $ready_file5 server_pid5=$!
CLI_PORT=`cat $ready_file5` wait_for_readyFile $ready_file5 $server_pid5 $port5
./examples/client/client -C -A certs/ocsp/root-ca-cert.pem -W 3 -v 3 \ ./examples/client/client -C -A certs/ocsp/root-ca-cert.pem -W 3 -v 3 \
-p $CLI_PORT -p $port5
RESULT=$? RESULT=$?
[ $RESULT -ne 1 ] && printf '\n\n%s\n' "Client connection succeeded $RESULT" && exit 1 [ $RESULT -ne 1 ] && printf '\n\n%s\n' "Client connection succeeded $RESULT" && exit 1
printf '%s\n\n' "Test successfully REVOKED!" printf '%s\n\n' "Test successfully REVOKED!"
@@ -400,13 +395,12 @@ remove_single_rF $ready_file5
./examples/server/server -c certs/ocsp/server1-cert.pem \ ./examples/server/server -c certs/ocsp/server1-cert.pem \
-k certs/ocsp/server1-key.pem -R $ready_file5 \ -k certs/ocsp/server1-key.pem -R $ready_file5 \
-p $port5 -H loadSSL & -p $port5 -H loadSSL &
wolf_pid=$! server_pid5=$!
wait_for_readyFile $ready_file5 wait_for_readyFile $ready_file5 $server_pid5 $port5
CLI_PORT=`cat $ready_file5` echo "test connection" | openssl s_client -status -connect 127.0.0.1:$port5 -cert ./certs/client-cert.pem -key ./certs/client-key.pem -CAfile ./certs/ocsp/root-ca-cert.pem
echo "test connection" | openssl s_client -status -connect 127.0.0.1:$CLI_PORT -cert ./certs/client-cert.pem -key ./certs/client-key.pem -CAfile ./certs/ocsp/root-ca-cert.pem
RESULT=$? RESULT=$?
[ $RESULT -ne 0 ] && printf '\n\n%s\n' "Client connection failed $RESULT" && exit 1 [ $RESULT -ne 0 ] && printf '\n\n%s\n' "Client connection failed $RESULT" && exit 1
wait $wolf_pid wait $server_pid5
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
printf '%s\n' "Unexpected server result" printf '%s\n' "Unexpected server result"
exit 1 exit 1
@@ -417,14 +411,13 @@ remove_single_rF $ready_file5
./examples/server/server -c certs/ocsp/server4-cert.pem \ ./examples/server/server -c certs/ocsp/server4-cert.pem \
-k certs/ocsp/server4-key.pem -R $ready_file5 \ -k certs/ocsp/server4-key.pem -R $ready_file5 \
-p $port5 -H loadSSL & -p $port5 -H loadSSL &
wolf_pid=$! server_pid5=$!
sleep 0.1 sleep 0.1
CLI_PORT=`cat $ready_file5`
./examples/client/client -C -A certs/ocsp/root-ca-cert.pem -W 3 -v 3 \ ./examples/client/client -C -A certs/ocsp/root-ca-cert.pem -W 3 -v 3 \
-p $CLI_PORT -p $port5
RESULT=$? RESULT=$?
[ $RESULT -ne 1 ] && printf '\n\n%s\n' "Client connection succeeded $RESULT" && exit 1 [ $RESULT -ne 1 ] && printf '\n\n%s\n' "Client connection succeeded $RESULT" && exit 1
wait $wolf_pid wait $server_pid5
if [ $? -ne 1 ]; then if [ $? -ne 1 ]; then
printf '%s\n' "Unexpected server result" printf '%s\n' "Unexpected server result"
exit 1 exit 1