def create_https_certificates(ssl_cert, ssl_key): """ Create self-signed HTTPS certificates and store in paths 'ssl_cert' and 'ssl_key' """ try: from sabnzbd.utils.certgen import generate_key, generate_local_cert private_key = generate_key(key_size=2048, output_file=ssl_key) generate_local_cert(private_key, days_valid=3560, output_file=ssl_cert, LN="SABnzbd", ON="SABnzbd") logging.info("Self-signed certificates generated successfully") except: logging.error(T("Error creating SSL key and certificate")) logging.info("Traceback: ", exc_info=True) return False return True
def create_https_certificates(ssl_cert, ssl_key): """ Create self-signed HTTPS certificates and store in paths 'ssl_cert' and 'ssl_key' """ if not sabnzbd.HAVE_CRYPTOGRAPHY: logging.error(T('%s missing'), 'Python Cryptography') return False # Save the key and certificate to disk try: from sabnzbd.utils.certgen import generate_key, generate_local_cert private_key = generate_key(key_size=2048, output_file=ssl_key) cert = generate_local_cert(private_key, days_valid=356*10, output_file=ssl_cert, LN=u'SABnzbd', ON=u'SABnzbd', CN=u'SABnzbd') logging.info('Self-signed certificates generated successfully') except: logging.error(T('Error creating SSL key and certificate')) logging.info("Traceback: ", exc_info=True) return False return True
def test_generate_local_cert(self): # Generate private key private_key = generate_key( output_file=os.path.join(SAB_CACHE_DIR, "test_key.pem")) # Generate local certificate using private key output_file = os.path.join(SAB_CACHE_DIR, "test_cert.cert") local_cert = generate_local_cert(private_key, output_file=output_file) assert local_cert # Validating generated key file public_key = local_cert.public_key() assert isinstance(public_key, rsa.RSAPublicKey) # Validate certificate file with open(output_file, "rb") as cert_file: cert_content = cert_file.read() cert = x509.load_pem_x509_certificate(cert_content, default_backend()) # Validate that the timestamp at which the certificate stops being valid (expiration date) is in future assert datetime.datetime.now() < cert.not_valid_after