generate_certs.sh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # Generate private key for Certificate Authority (CA)
  2. openssl genrsa -out ca.key 4096
  3. # Generate CA certificate
  4. openssl req -new -x509 -days 365 -key ca.key -out ca.pem -subj "/C=US/ST=State/L=City/O=Organization/OU=Unit/CN=MyCA"
  5. # Generate private key for Server
  6. openssl genrsa -out server.key 4096
  7. # Generate Certificate Signing Request (CSR) for Server
  8. openssl req -new -key server.key -out server.csr -subj "/C=US/ST=State/L=City/O=Organization/OU=Unit/CN=localhost"
  9. # Generate Server certificate
  10. openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.pem -extfile <(printf "subjectAltName=DNS:localhost,DNS:my-server,IP:127.0.0.1")
  11. # Generate private key for Client
  12. openssl genrsa -out client.key 4096
  13. # Generate CSR for Client
  14. openssl req -new -key client.key -out client.csr -subj "/C=US/ST=State/L=City/O=Organization/OU=Unit/CN=client"
  15. # Generate Client certificate
  16. openssl x509 -req -days 365 -in client.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.pem
  17. # Verify the certificates
  18. echo "Verifying Server Certificate:"
  19. openssl verify -CAfile ca.pem server.pem
  20. echo "Verifying Client Certificate:"
  21. openssl verify -CAfile ca.pem client.pem
  22. # Clean up CSR files (optional)
  23. rm server.csr client.csr
  24. # Display certificate information
  25. echo "Server Certificate Info:"
  26. openssl x509 -in server.pem -text -noout | grep "Subject:\|Issuer:\|DNS:\|IP Address:"
  27. echo "Client Certificate Info:"
  28. openssl x509 -in client.pem -text -noout | grep "Subject:\|Issuer:"
  29. # Final files you'll need:
  30. # - ca.pem (Certificate Authority certificate)
  31. # - server.key (Server private key)
  32. # - server.pem (Server certificate)
  33. # - client.key (Client private key)
  34. # - client.pem (Client certificate)