# HTTPS Connection Issues - Troubleshooting Guide
## Problem: Login doesn't work via HTTPS
If you're experiencing connection issues when using HTTPS (e.g., `https://192.168.1.100:8095`), it's likely due to **App Transport Security (ATS)** blocking the connection.
## Quick Fix: Enable App Transport Security Exceptions
### Option 1: Allow All Insecure Loads (Development Only)
⚠️ **WARNING: Only use this for development/testing! Never in production!**
Add to your `Info.plist`:
```xml
NSAppTransportSecurity
NSAllowsArbitraryLoads
```
**How to add in Xcode:**
1. Select your target → Info tab
2. Hover over any row and click the "+" button
3. Type "App Transport Security Settings"
4. Click the disclosure triangle to expand
5. Add a row inside: "Allow Arbitrary Loads" = YES
### Option 2: Allow Specific Domain (Safer)
If you know your server's domain/IP:
```xml
NSAppTransportSecurity
NSExceptionDomains
192.168.1.100
NSExceptionAllowsInsecureHTTPLoads
NSIncludesSubdomains
```
## Why Does This Happen?
1. **Self-Signed Certificates**: Most local Music Assistant servers use self-signed SSL certificates
2. **ATS Requirements**: iOS requires valid certificates from trusted Certificate Authorities
3. **IP Addresses**: HTTPS with IP addresses (not domains) often fails certificate validation
## What Was Fixed in Code:
✅ Better error logging in `MAAuthManager.login()`
✅ Proper HTTP status code handling (200, 401, etc.)
✅ Detailed error messages in console
✅ Timeout configuration for slow networks
## Check the Console for Errors
When login fails, check Xcode console for messages like:
```
[ERROR] Login failed with status 401
[ERROR] Login network error: The certificate for this server is invalid
[ERROR] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
```
These indicate ATS is blocking the connection.
## Production Solution
For production apps, you should:
1. **Get a valid SSL certificate** (Let's Encrypt, etc.)
2. **Use a proper domain** instead of IP address
3. **Configure DNS** to point to your server
4. **Remove ATS exceptions** from Info.plist
## Testing HTTPS
To verify your HTTPS connection works:
1. **In Safari**: Visit `https://YOUR_SERVER:8095`
- If you see a certificate warning, that's the issue
2. **In Terminal**:
```bash
curl -v https://YOUR_SERVER:8095/api/auth/login
```
- Check for SSL errors
3. **Check Server Logs**: Music Assistant should log connection attempts
## Alternative: Use HTTP Instead
For local network use, HTTP is fine:
- Use `http://192.168.1.100:8095`
- No certificate issues
- Still secure on your local network
- ATS allows localhost/local IP HTTP connections
## Complete Info.plist with ATS Exception
```xml
UIBackgroundModes
audio
NSAppTransportSecurity
NSAllowsArbitraryLoads
```
## Summary
**Problem**: iOS blocks HTTPS connections to servers with invalid/self-signed certificates
**Solution**: Add ATS exception to Info.plist
**Best Practice**: Use HTTP for local servers, HTTPS with valid certificates for production