Coverage for mindsdb / utilities / wizards.py: 12%

16 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-01-21 00:36 +0000

1from datetime import datetime, timedelta 

2 

3 

4def make_ssl_cert(file_path): 

5 from cryptography import x509 

6 from cryptography.x509.oid import NameOID 

7 from cryptography.hazmat.backends import default_backend 

8 from cryptography.hazmat.primitives import hashes 

9 from cryptography.hazmat.primitives import serialization 

10 from cryptography.hazmat.primitives.asymmetric import rsa 

11 

12 key = rsa.generate_private_key( 

13 public_exponent=65537, 

14 key_size=2048, 

15 backend=default_backend(), 

16 ) 

17 

18 name = x509.Name([ 

19 x509.NameAttribute(NameOID.COMMON_NAME, 'mdb_autogen'), 

20 x509.NameAttribute(NameOID.COUNTRY_NAME, 'US'), 

21 x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, 'California'), 

22 x509.NameAttribute(NameOID.LOCALITY_NAME, 'Berkeley'), 

23 x509.NameAttribute(NameOID.ORGANIZATION_NAME, 'MindsDB') 

24 ]) 

25 

26 now = datetime.utcnow() 

27 cert = ( 

28 x509.CertificateBuilder() 

29 .subject_name(name) 

30 .issuer_name(name) 

31 .public_key(key.public_key()) 

32 .serial_number(1) 

33 .not_valid_before(now - timedelta(days=10 * 365)) 

34 .not_valid_after(now + timedelta(days=10 * 365)) 

35 .add_extension( 

36 x509.BasicConstraints(ca=True, path_length=0), 

37 False 

38 ) 

39 .sign(key, hashes.SHA256(), default_backend()) 

40 ) 

41 cert_pem = cert.public_bytes(encoding=serialization.Encoding.PEM) 

42 key_pem = key.private_bytes( 

43 encoding=serialization.Encoding.PEM, 

44 format=serialization.PrivateFormat.TraditionalOpenSSL, 

45 encryption_algorithm=serialization.NoEncryption(), 

46 ) 

47 

48 with open(file_path, 'wb') as f: 

49 f.write(key_pem + cert_pem)