Skip to content

Commit

Permalink
Fix bug when legacy NPN is tested against a TLS 1.3 host
Browse files Browse the repository at this point in the history
When testing a TLS 1.3 host s_client_options used TLS 1.3 ciphers to test
for NPN. As that is not implemented we nee dto make sure any other version
is used.

This PR ensures that --after testing whether it's a TLS 1.3-only host
where this test doesn't make any sense in the first place.

Fix for #2633
  • Loading branch information
drwetter committed Jan 24, 2025
1 parent 5c1232b commit 43a0099
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion testssl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11258,6 +11258,12 @@ npn_pre(){
fileout "NPN" "WARN" "not tested $OPENSSL doesn't support NPN/SPDY"
return 7
fi
if "$TLS13_ONLY"; then
# https://github.com/openssl/openssl/issues/3665
pr_warning "There's no such thing as NPN on TLS 1.3-only hosts"
fileout "NPN" "WARN" "not possible for TLS 1.3-only hosts"
return 6
fi
return 0
}

Expand All @@ -11281,16 +11287,24 @@ alpn_pre(){
run_npn() {
local tmpstr
local -i ret=0
local proto=""
local jsonID="NPN"

[[ -n "$STARTTLS" ]] && return 0
"$FAST" && return 0
pr_bold " NPN/SPDY "

if ! npn_pre; then
outln
return 0
fi
$OPENSSL s_client $(s_client_options "-connect $NODEIP:$PORT $BUGS $SNI -nextprotoneg "$NPN_PROTOs"") </dev/null 2>$ERRFILE >$TMPFILE

# TLS 1.3 s_client doesn't support -nextprotoneg when connecting with TLS 1.3. So we need to make sure it wont be used

Check failure on line 11302 in testssl.sh

View workflow job for this annotation

GitHub Actions / Check for spelling errors

wont ==> won't

Check failure on line 11302 in testssl.sh

View workflow job for this annotation

GitHub Actions / Check for spelling errors

wont ==> won't
# TLS13_ONLY is tested here again, just to be sure, see npn_pre
if "$HAS_TLS13" && ! $TLS13_ONLY ]] ; then
proto="-no_tls1_3"
fi
$OPENSSL s_client $(s_client_options "$proto -connect $NODEIP:$PORT $BUGS $SNI -nextprotoneg "$NPN_PROTOs"") </dev/null 2>$ERRFILE >$TMPFILE
[[ $? -ne 0 ]] && ret=1
tmpstr="$(grep -a '^Protocols' $TMPFILE | sed 's/Protocols.*: //')"
if [[ -z "$tmpstr" ]] || [[ "$tmpstr" == " " ]]; then
Expand Down

0 comments on commit 43a0099

Please sign in to comment.