blob: 4167403c70703c60234c86973a9f074620c2871c [file] [log] [blame]
#!/bin/sh
. STlsVars
# this file contains tests common to both tls and dtls usages
TLSDIR=$SNMP_TMPDIR/tls
#########################################
# Create the certificates
# create the ca
CAPTURE $NSCERT genca --cn ca-net-snmp.org $NSCERTARGS
# snmpd
HOSTNAME=`hostname`
CAPTURE $NSCERT gencert --with-ca ca-net-snmp.org -t snmpd --cn $HOSTNAME $NSCERTARGS
SERVERFP=`$NSCERT showcerts --fingerprint --brief snmpd $NSCERTARGS`
CHECKVALUEISNT "$SERVERFP" "" "generated fingerprint for snmpd certificate"
# user
CAPTURE $NSCERT gencert --with-ca ca-net-snmp.org -t snmpapp --cn 'testuser' $NSCERTARGS
TESTUSERFP=`$NSCERT showcerts --fingerprint --brief snmpapp $NSCERTARGS`
CHECKVALUEISNT "$TESTUSERFP" "" "generated fingerprint for testuser certificate"
# user2
CAPTURE $NSCERT gencert --with-ca ca-net-snmp.org -t snmpapp2 --cn 'testuser2' $NSCERTARGS
TESTUSER2FP=`$NSCERT showcerts --fingerprint --brief snmpapp2 $NSCERTARGS`
CHECKVALUEISNT "$TESTUSER2FP" "" "generated fingerprint for testuser2 certificate"
########################################
# Configure the .conf files
CONFIGAPP serverCert $SERVERFP
# common name mappings
CONFIGAGENT certSecName 9 $TESTUSERFP --cn
CONFIGAGENT certSecName 10 $TESTUSER2FP --cn
CONFIGAGENT rwuser -s tsm testuser authpriv
CONFIGAGENT rwuser -s tsm testuser2 authpriv
CRLFILE=$SNMP_TMPDIR/crlfile.pem
# configure the CRL locations
CONFIGAGENT '[snmp]' x509crlfile $CRLFILE
CONFIGAPP '[snmp]' x509crlfile $CRLFILE
CRLCACMD="env DIR=$TLSDIR CN=ca-net-snp.org openssl ca"
CRLARGS="-config $TLSDIR/.openssl.conf -keyfile $TLSDIR/private/ca-net-snmp.org.key -cert $TLSDIR/ca-certs/ca-net-snmp.org.crt"
# generate the initial CRL
touch $TLSDIR/.index
echo "01" > $TLSDIR/.crlnumber
CAPTURE "$CRLCACMD -gencrl $CRLARGS -out $CRLFILE"
#
# put the second client into the CRL and it shouldn't work
#
CAPTURE "$CRLCACMD -revoke $TLSDIR/certs/snmpapp2.crt $CRLARGS -out $CRLFILE"
CAPTURE "$CRLCACMD -gencrl $CRLARGS -out $CRLFILE"
######################################################################
# Run the actual list of tests
#
# start the agent up
FLAGS="-Dtls -On $SNMP_FLAGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT"
AGENT_FLAGS="-Dtls"
STARTAGENT
# using user 1 - a common name mapped certificate
# (using the default "snmpapp" certificate because we don't specify another)
CAPTURE "snmpget -Dssl $FLAGS .1.3.6.1.2.1.1.3.0"
CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
# using user 2 should now fail
CAPTURE "snmpget -T our_identity=snmpapp2 -Dssl $FLAGS .1.3.6.1.2.1.1.3.0"
CHECKCOUNT 0 ".1.3.6.1.2.1.1.3.0 = Timeticks:"
CHECKAGENT "certificate revoked"
#
# now put the server's cert into the client crl file
#
CAPTURE "$CRLCACMD -revoke $TLSDIR/certs/snmpd.crt $CRLARGS"
CAPTURE "$CRLCACMD -gencrl $CRLARGS -out $CRLFILE"
# user 1 should now fail on the client side
CAPTURE "snmpget -Dssl $FLAGS .1.3.6.1.2.1.1.3.0"
CHECK "certificate revoked"
# cleanup
STOPAGENT
FINISHED