#!/usr/bin/env python3 """ Certificate Bundle Combiner for TradingAgents This script combines your corporate certificate bundle (Netskope) with the certifi certificate bundle to ensure all certificates are available. """ import os import shutil from pathlib import Path def combine_certificate_bundles(): """Combine corporate and certifi certificate bundles""" print("๐Ÿ”— Certificate Bundle Combiner") print("=" * 40) # Paths corporate_bundle = "/Users/kevin.bruton/netskope-certificates/netskope-cert-bundle.pem" try: import certifi certifi_bundle = certifi.where() except ImportError: print("โŒ certifi package not found. Please install it: pip install certifi") return False combined_bundle = "/Users/kevin.bruton/netskope-certificates/combined-cert-bundle.pem" print(f"๐Ÿ“‹ Corporate bundle: {corporate_bundle}") print(f"๐Ÿ“‹ Certifi bundle: {certifi_bundle}") print(f"๐Ÿ“‹ Combined bundle: {combined_bundle}") # Check if corporate bundle exists if not os.path.exists(corporate_bundle): print(f"โŒ Corporate certificate bundle not found: {corporate_bundle}") return False # Create combined bundle try: with open(combined_bundle, 'w') as combined_file: # Write corporate certificates first print("๐Ÿ“ Adding corporate certificates...") with open(corporate_bundle, 'r') as corp_file: combined_file.write(corp_file.read()) # Add separator combined_file.write("\n# Certifi certificates below\n") # Write certifi certificates print("๐Ÿ“ Adding certifi certificates...") with open(certifi_bundle, 'r') as certifi_file: certifi_content = certifi_file.read() combined_file.write(certifi_content) print(f"โœ… Combined certificate bundle created: {combined_bundle}") # Set permissions os.chmod(combined_bundle, 0o644) # Show usage instructions print("\n๐Ÿ’ก Usage Instructions:") print(f" Add this to your .env file:") print(f" REQUESTS_CA_BUNDLE={combined_bundle}") print(f" CURL_CA_BUNDLE={combined_bundle}") print("\n Or export in your shell:") print(f" export REQUESTS_CA_BUNDLE={combined_bundle}") print(f" export CURL_CA_BUNDLE={combined_bundle}") return True except Exception as e: print(f"โŒ Error creating combined bundle: {e}") return False def test_combined_bundle(): """Test the combined certificate bundle""" combined_bundle = "/Users/kevin.bruton/netskope-certificates/combined-cert-bundle.pem" if not os.path.exists(combined_bundle): print("โŒ Combined bundle not found. Run combine_certificate_bundles() first.") return False print(f"\n๐Ÿงช Testing combined certificate bundle: {combined_bundle}") import requests test_urls = [ "https://www.google.com", "https://api.openai.com/v1/models", "https://openrouter.ai/api/v1/models" ] for url in test_urls: try: response = requests.get(url, verify=combined_bundle, timeout=10) print(f"โœ… {url} - Status: {response.status_code}") except Exception as e: print(f"โŒ {url} - Error: {e}") return True if __name__ == "__main__": if combine_certificate_bundles(): test_combined_bundle()