tls13demo.sh 1.7 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #!/bin/bash -x
  2. gmssl sm2keygen -pass 1234 -out rootcakey.pem
  3. gmssl certgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN ROOTCA -days 3650 -key rootcakey.pem -pass 1234 -out rootcacert.pem -key_usage keyCertSign -key_usage cRLSign -ca
  4. gmssl certparse -in rootcacert.pem
  5. gmssl sm2keygen -pass 1234 -out cakey.pem
  6. gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN "Sub CA" -key cakey.pem -pass 1234 -out careq.pem
  7. gmssl reqsign -in careq.pem -days 365 -key_usage keyCertSign -ca -path_len_constraint 0 -cacert rootcacert.pem -key rootcakey.pem -pass 1234 -out cacert.pem
  8. gmssl certparse -in cacert.pem
  9. gmssl sm2keygen -pass 1234 -out signkey.pem
  10. gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN localhost -key signkey.pem -pass 1234 -out signreq.pem
  11. gmssl reqsign -in signreq.pem -days 365 -key_usage digitalSignature -cacert cacert.pem -key cakey.pem -pass 1234 -out signcert.pem
  12. gmssl certparse -in signcert.pem
  13. cat signcert.pem > certs.pem
  14. cat cacert.pem >> certs.pem
  15. # If port is already in use, `gmssl` will fail, use `ps aux | grep gmssl` and `sudo kill -9` to kill existing proc
  16. # TODO: check if `gmssl` is failed
  17. which sudo
  18. if [ $? -eq 0 ]; then
  19. SUDO=sudo
  20. fi
  21. $SUDO gmssl tls13_server -port 4433 -cert certs.pem -key signkey.pem -pass 1234 -cacert cacert.pem & # 1>/dev/null 2>/dev/null &
  22. sleep 3
  23. gmssl sm2keygen -pass 1234 -out clientkey.pem
  24. gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN Client -key clientkey.pem -pass 1234 -out clientreq.pem
  25. gmssl reqsign -in clientreq.pem -days 365 -key_usage digitalSignature -cacert cacert.pem -key cakey.pem -pass 1234 -out clientcert.pem
  26. gmssl certparse -in clientcert.pem
  27. gmssl tls13_client -host 127.0.0.1 -port 4433 -cacert rootcacert.pem -cert clientcert.pem -key clientkey.pem -pass 1234