SSL Proxy
This commit is contained in:
1 parent
1bed9f586e
commit
b51e9cde2f
8 files changed
+1080
No files matched your search
@@ -0,0 +1,51 @@
|
||||
from pathlib import Path
|
||||
import argparse
|
||||
from OpenSSL import crypto
|
||||
import sys
|
||||
|
||||
def generate_certificate(cert_name: str, output_dir: Path, cn: str = "localhost", days: int = 365):
|
||||
k = crypto.PKey()
|
||||
k.generate_key(crypto.TYPE_RSA, 2048)
|
||||
|
||||
cert = crypto.X509()
|
||||
cert.get_subject().CN = cn
|
||||
cert.set_serial_number(1000)
|
||||
cert.gmtime_adj_notBefore(0)
|
||||
cert.gmtime_adj_notAfter(days*24*60*60)
|
||||
cert.set_issuer(cert.get_subject())
|
||||
cert.set_pubkey(k)
|
||||
cert.sign(k, 'sha256')
|
||||
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
with open(output_dir / f"{cert_name}_cert.pem", "wb") as f:
|
||||
f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert))
|
||||
with open(output_dir / f"{cert_name}_key.pem", "wb") as f:
|
||||
f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, k))
|
||||
|
||||
def main():
|
||||
print("Certificate Generator")
|
||||
print("-" * 20)
|
||||
|
||||
# Get default paths
|
||||
default_path = Path(__file__).parent / "certificates"
|
||||
|
||||
# Get user input with defaults
|
||||
cert_name = input(f"Certificate name (default: test_cert): ") or "test_cert"
|
||||
cn = input(f"Common Name (default: localhost): ") or "localhost"
|
||||
days = input(f"Valid days (default: 365): ") or "365"
|
||||
output_dir = input(f"Output directory (default: {default_path}): ") or str(default_path)
|
||||
|
||||
try:
|
||||
days = int(days)
|
||||
output_path = Path(output_dir)
|
||||
generate_certificate(cert_name, output_path, cn, days)
|
||||
print(f"\nSuccess! Certificate files created:")
|
||||
print(f"- {output_path / f'{cert_name}_cert.pem'}")
|
||||
print(f"- {output_path / f'{cert_name}_key.pem'}")
|
||||
except Exception as e:
|
||||
print(f"\nError: {str(e)}")
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user